第12天。
今天的题目是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:
Note:
The total number of elements of the given matrix will not exceed 10,000.
这道题好像是之前没做出来的。
题意很好理解,这道题的关键就在于如何处理在边界时的移动。
首先,常规的移动就分为两种:
- 向右上移动
- 向左下移动
实现常规移动,这里就不赘述了。
然后就是在边界时如何移动了,经过观察移动的情况,我们可以总结出:
- 边界时,只有向右移动和向下移动两种情况
- 在向右上移动时遇到边界,优先向右移动
- 在向左下移动时遇到边界,优先向左移动
根据上面的结论,我们就可以写出代码了: