runtime 0 ms, beats 100% of cpp submissions
O(n^2) solution with explanation
tags: simulation
🔗 link
Spiral Matrix II
📖 description
給定一個變數 n ,生成一個螺旋 Order 的 2 維陣列。
ex.
Input:
n = 3
Output:
[[1,2,3],[8,9,4],[7,6,5]]
🧠 solution
Spiral Matrix
與上一題類似,只是單純從照順序讀取陣列元素變成照順序放元素。
⏳ time complexity
遍歷 2 維陣列,時間複雜度 O(n^2)
總時間複雜度 O(n^2)
📝 code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class Solution { public: vector<vector<int>> generateMatrix(int n) { int l = 0,r = n-1,t = 0,d =n-1; int state = 0; int cnt = 1; vector<vector<int>> ans(n,vector<int>(n)); while(l<=r && t<=d){ if(state == 0){ for(int i=l;i<=r;i++){ ans[t][i] = cnt++; } t++; } else if(state == 1){ for(int i=t;i<=d;i++){ ans[i][r] = cnt++; } r--; } else if(state == 2){ for(int i=r;i>=l;i--){ ans[d][i] = cnt++; } d--; } else{ for(int i=d;i>=t;i--){ ans[i][l] = cnt++; } l++; } state = (state+1)%4; } return ans; } };
|