【leetcode】每日精選題詳解之59. 螺旋矩陣 II

愛做飯的程式袁發表於2020-10-10

        嗨,大家好,我是袁廚(因為酷愛做飯,所以自己考取了廚師證)。之前一直看大家寫的部落格,學到了很多東西。然後最近萌生了自己寫的想法,將自己知道的分享給需要的同學。以後每天會為大家分享leetcode精選題目的各種題解和Python, JS, JQ, CSS, PHP, JAVA的一些小Demo。請大家關注我,一起交流學習吧。


題目描述

在這裡插入圖片描述


螺旋填充

做題思路

在這裡插入圖片描述
這個題目比較簡單,但是我們需要注意的是邊界情況,之前寫過一篇部落格是螺旋遍歷二維陣列。跟這個題目邏輯思想是相反的,那個會做的話這個也是OK的。主要思想就是先建立一個n*n的二維陣列,然後順時針往裡面填充資料。

題目程式碼

class Solution {
  public static  int[][] generateMatrix(int n) {
        int num = 1;//用來填充的數字,遞增
        int[][] array = new int[n][n];//建立陣列 
        for(int i = 0;i < (n+1)/2;i++){//也可以改為while迴圈更容易理解
            for(int top = i ; top < n-i ;top++ ){
                //跳出迴圈,填充陣列完畢,防止 重複填充
                if(num>n*n){
                     break;
                }
                array[i][top]=num;
                num++;
            }
            for(int right = i+1 ; right < n-i;right++){
                if(num>n*n){
                    break;
                }
                array[right][n-i-1]=num;
                num++;
            }
            for(int bottom = n-i-2;bottom>=i;bottom--){
                if(num>n*n){
                    break;
                }
                array[n-i-1][bottom]=num;
                num++;
            }
            for(int left = n-i-2;left>i;left--){
                if(num>n*n){
                    break;
                }
                array[left][i]=num;
                num++;
            }
        }
            return array;
    }
}

        


總結

這個題目還算比較 簡單,可能邊界情況比較難處理,不過,考慮仔細就OK啦,加油繼續堅持下去!

作者:LeetCode
連結:https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

相關文章