Diagonal Traverse

2024-09-04 14:08
文章标签 diagonal traverse

本文主要是介绍Diagonal Traverse,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image.

Example:

Input:
[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]
]Output:  [1,2,4,7,5,3,6,8,9]Explanation:

思路:用一个变量表示向上或者向下,然后向上的时候,row --, col++,特殊情况是最后一个元素,分两种一种是到达最后一行 col++,一种是到达了最后一列, row++

同理向下的时候收集,row++, col--, 特殊情况,最后一个元素,到达第一列row ++和最后一行col++; 注意收集的时候,普通的收集,用while循环完成,最后一个,特殊处理;

class Solution {public int[] findDiagonalOrder(int[][] mat) {int m = mat.length;int n = mat[0].length;boolean up = true;int row = 0; int col = 0;int[] res = new int[m * n];int i = 0;while(row < m && col < n) {if(up) {// 普通的收集;while(row > 0 && col < n - 1) {res[i++] = mat[row][col];row--;col++;}// reach the last item;res[i++] = mat[row][col];//  分两种情况讨论;if(col == n - 1) {row++;} else {col++;}} else {// go down;// 普通的收集;while(row < m - 1 && col > 0) {res[i++] = mat[row][col];row++;col--;}// reach the last item;res[i++] = mat[row][col];//  分两种情况讨论;if(row == m - 1) {col++;} else {row++;}}up = !up;}return res;}
}

这篇关于Diagonal Traverse的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136201

相关文章

Tree的Traverse and divided conquer

Tree的traverse,Preorder, Inorder, Postorder ,这些都是用stack来模拟考察的比较多。参考这里: PreOrder, InOrder, PostOrder 题型总结  这里主要总结,divide and conquer 逻辑,往上返回result的情况; Lowest Common Ancestor of a Binary Search Tree 思路

BFS 到 Level Order traverse 到 UnionFind 到 Topological Sort 到 Dijkstra 思路总结

====BFS 找联通量,找component. Number of Islands (BFS, DFS 都可以做) Surrounded Regions 算法是:先收集四个周边的 O,然后用BFS或者DFS向里面扩展,visited记录connect点,最后如果没有被visited到的O,会变成X;T: O(m*n), Space: O(m*n). Is Graph Bipartite (

对角矩阵的性质(diagonal matrix)

对角矩阵(英语:diagonal matrix)是一个主对角线之外的元素皆为0的矩阵。对角线上的元素可以为0或其他值。因此n行n列的矩阵{\displaystyle \mathbf {D} } = (di,j)若符合以下的性质: {\displaystyle d_{i,j}=0{\mbox{ if }}i\neq j\qquad \forall i,j\in \{1,2,\ldots ,n\

Educational Codeforces Round 50 (Rated for Div. 2) B. Diagonal Walking v.2(思维)

题目链接:http://codeforces.com/contest/1036/problem/B 题意:给你一个q代表q次询问,然后给出三个数n,m, k。(n,m)代表终点,k代表最多移动的步数。让你求出到达终点的过程中,走对角线的最大步数。 思路:当m > k时输出-1(设m是较大的数),当m-n是奇数时有一步不能走对角线所以k--,当走对角线可以直接到达终点,如果剩余的步数是奇数则有两

SWT/Jface StyledText 的Traverse,VerifyKey,MouseListener分析

StyledText 对 Page up Page down 按钮的支持 目标功能:     随便焦点的跳转(键盘的上下左右操作;键盘的PgUp、PgDown操作;鼠标的点击操作),得到焦点所在位置的Style信息。 StyledText可以添加TraverseListener, 表示对界面上的焦点移动的监听. Java代码  1.getStyledText().addTraver

LeetCode1572. Matrix Diagonal Sum

文章目录 一、题目二、题解 一、题目 Given a square matrix mat, return the sum of the matrix diagonals. Only include the sum of all the elements on the primary diagonal and all the elements on the secondary

Leetcode 1572. Matrix Diagonal Sum [Python]

注意行列数为奇数时,需要减去中心的位置的值,因为其被加和了两次。 class Solution:def diagonalSum(self, mat: List[List[int]]) -> int:res = 0for i, j in zip(range(len(mat)), range(len(mat[0]))):res += mat[i][j]for i in range(len(mat))