最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)LeetCode(54.螺旋矩陣)

 更新時間:2021年07月09日 09:51:19   作者:莫少俠9527  
這篇文章主要介紹了Java實(shí)現(xiàn)LeetCode(螺旋矩陣),本文列出題目和寫題的思路。給出完整的解法代碼,需要的朋友可以參考下

LeetCode54. 螺旋矩陣 java實(shí)現(xiàn)

題目

  • 難度 中
  • 給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。

示例 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]

思路

找出每個點(diǎn)的坐標(biāo),每個點(diǎn)每次延順時針分別為右、下、左、上四個方向走一個位置,維護(hù)一個方向變量,不同方向時做相應(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;
        //每次走上下左右四個方向,一次只走一格
        //注意點(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Servlet輸出一個驗(yàn)證碼圖片的實(shí)現(xiàn)方法實(shí)例

    Servlet輸出一個驗(yàn)證碼圖片的實(shí)現(xiàn)方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Servlet輸出一個驗(yàn)證碼圖片的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java如何用遞歸方法求階乘

    java如何用遞歸方法求階乘

    這篇文章主要介紹了java 用遞歸方法求階乘的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java實(shí)現(xiàn)讀取和寫入properties文件

    Java實(shí)現(xiàn)讀取和寫入properties文件

    這篇文章主要介紹了Java實(shí)現(xiàn)讀取和寫入properties文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • ArrayList和LinkedList區(qū)別及使用場景代碼解析

    ArrayList和LinkedList區(qū)別及使用場景代碼解析

    這篇文章主要介紹了ArrayList和LinkedList區(qū)別及使用場景代碼解析,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • JSON在Java中的相互轉(zhuǎn)換示例詳解

    JSON在Java中的相互轉(zhuǎn)換示例詳解

    JSON (JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。這篇文章主要介紹了JSON在Java中的相互轉(zhuǎn)換,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Springboot框架實(shí)現(xiàn)自動裝配詳解

    Springboot框架實(shí)現(xiàn)自動裝配詳解

    在使用springboot時,很多配置我們都沒有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動裝配。本文將詳細(xì)為大家講解SpringBoot的自動裝配原理,需要的可以參考一下
    2022-08-08
  • Mybatis下動態(tài)sql中##和$$的區(qū)別講解

    Mybatis下動態(tài)sql中##和$$的區(qū)別講解

    今天小編就為大家分享一篇關(guān)于Mybatis下動態(tài)sql中##和$$的區(qū)別講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • java計(jì)算兩個時間相差天數(shù)的方法匯總

    java計(jì)算兩個時間相差天數(shù)的方法匯總

    這篇文章主要介紹了java計(jì)算兩個時間相差天數(shù)的方法,感興趣的小伙伴們可以參考一下
    2015-11-11
  • mybatis一級緩存和二級緩存的區(qū)別及說明

    mybatis一級緩存和二級緩存的區(qū)別及說明

    這篇文章主要介紹了mybatis一級緩存和二級緩存的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • SpringSecurity解決POST方式下CSRF問題

    SpringSecurity解決POST方式下CSRF問題

    本文主要介紹了SpringSecurity解決POST方式下CSRF問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論

镶黄旗| 海城市| 商河县| 北流市| 仙游县| 灵丘县| 嘉鱼县| 科尔| 社旗县| 裕民县| 陈巴尔虎旗| 克什克腾旗| 郎溪县| 历史| 南阳市| 宝兴县| 柏乡县| 潮州市| 琼结县| 台中县| 博爱县| 宁远县| 蒙城县| 大理市| 五常市| 怀来县| 玉田县| 南京市| 招远市| 肥城市| 遂昌县| 刚察县| 腾冲县| 八宿县| 阿拉善左旗| 祥云县| 琼海市| 深圳市| 永福县| 建阳市| 绥芬河市|