Java實(shí)現(xiàn)LeetCode(54.螺旋矩陣)
LeetCode54. 螺旋矩陣 java實(shí)現(xiàn)
題目
- 難度 中
- 給定一個(gè)包含 m x n 個(gè)元素的矩陣(m 行, n 列),請按照順時(shí)針螺旋順序,返回矩陣中的所有元素。
示例 1:
輸入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
輸出: [1,2,3,6,9,8,7,4,5]
示例 2:
輸入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
輸出: [1,2,3,4,8,12,11,10,9,5,6,7]
思路
找出每個(gè)點(diǎn)的坐標(biāo),每個(gè)點(diǎn)每次延順時(shí)針分別為右、下、左、上四個(gè)方向走一個(gè)位置,維護(hù)一個(gè)方向變量,不同方向時(shí)做相應(yīng)的邊界判斷。每次遇到邊界,必定改變方向,縮短原邊界大小。
解法
public List<Integer> spiralOrder(int[][] matrix) { ArrayList<Integer> order = new ArrayList<>(); if (matrix.length == 0 || matrix[0].length == 0) { return order; } int m = matrix.length; int n = matrix[0].length; int len = m * n; int row = 0; int col = 0; int leftMin = 0; //每次走上下左右四個(gè)方向,一次只走一格 //注意點(diǎn),因?yàn)槭菑模?,1)開始走的,所以上界最小row是第二行1 int topMin = 1; //初始方向值 int k = 0; int[][] dir = { {1, 0, -1, 0}, {0, 1, 0, -1} }; for (int i = 0; i < len; i++) { order.add(matrix[row][col]); col += dir[0][k % 4]; row += dir[1][k % 4]; switch (k % 4) { case 0: //右 if (col > n - 1) { col = n - 1; row++; k++; n--; } break; case 1: //下 if (row > m - 1) { row = m - 1; col--; k++; m--; } break; case 2: //左 if (col < leftMin) { col = leftMin; leftMin++; row--; k++; } break; case 3: //上 if (row < topMin) { row = topMin; topMin++; col++; k++; } break; } } return order; }
結(jié)果
2ms 戰(zhàn)勝99.74%
到此這篇關(guān)于Java實(shí)現(xiàn)LeetCode(螺旋矩陣)的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)螺旋矩陣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C++實(shí)現(xiàn)LeetCode(131.拆分回文串)
- C++實(shí)現(xiàn)LeetCode(9.驗(yàn)證回文數(shù)字)
- C++實(shí)現(xiàn)LeetCode(5.最長回文子串)
- C++實(shí)現(xiàn)LeetCode(兩個(gè)有序數(shù)組的中位數(shù))
- C++實(shí)現(xiàn)LeetCode(205.同構(gòu)字符串)
- C++實(shí)現(xiàn)leetcode(3.最長無重復(fù)字符的子串)
- C++實(shí)現(xiàn)LeetCode(2.兩個(gè)數(shù)字相加)
- C++實(shí)現(xiàn)LeetCode(132.拆分回文串之二)
相關(guān)文章
Spring MVC--攔截器實(shí)現(xiàn)和用戶登陸例子
本文主要介紹了Spring MVC--攔截器實(shí)現(xiàn)和用戶登陸例子,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-03-03使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑
這篇文章主要介紹了使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑,需要的朋友可以參考下2018-09-09spring?cloud?gateway中netty線程池小優(yōu)化
這篇文章主要介紹了spring?cloud?gateway中netty線程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Spring Boot中@RequestParam參數(shù)的5種情況說明
這篇文章主要介紹了Spring Boot中@RequestParam參數(shù)的5種情況說明,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Mybatis注解sql時(shí)出現(xiàn)的一個(gè)錯(cuò)誤及解決
這篇文章主要介紹了Mybatis注解sql時(shí)出現(xiàn)的一個(gè)錯(cuò)誤及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02