本文主要是介绍java数据结构与算法刷题-----LeetCode59. 螺旋矩阵 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846
初始,top行执向第一行,bottom行指向最后一行。left列指向第一列,right列指向最后一列 首先填充top行,arr[top][j], (其中left <= j <= right)。此时第一行填充完成,top下移 => top++ 然后填充right列,arr[j][right], (其中top <= j <= bottom)。此时最后一列填充完成,right左移 => tright– 然后填充bottom行,arr[bottom][j], (其中right >= j >= left)。此时最后一行填充完成,bottom上移 => bottom– 然后填充left列,arr[j][left], (其中bottom >= j >= top)。此时第一列填充完成,left右移 => left++ 此时完成一圈螺旋,整体进入下一层螺旋,重复上面2,3,4,5操作
代码:时间复杂度O( n 2 n^2 n 2 ).空间复杂度O(1)
class Solution { public int [ ] [ ] generateMatrix ( int n) { int arr[ ] [ ] = new int [ n] [ n] ; int left = 0 , right = n- 1 ; int top = 0 , bottom = n- 1 ; for ( int i = 1 ; i<= n* n; ) { for ( int j = left; j<= right; j++ ) arr[ top] [ j] = i++ ; top++ ; for ( int j = top; j <= bottom; j++ ) arr[ j] [ right] = i++ ; right-- ; for ( int j = right; j >= left; j-- ) arr[ bottom] [ j] = i++ ; bottom-- ; for ( int j = bottom; j>= top; j-- ) arr[ j] [ left] = i++ ; left++ ; } return arr; }
}
这篇关于java数据结构与算法刷题-----LeetCode59. 螺旋矩阵 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!