当前位置:网站首页>54. Spiral matrix & 59 Spiral matrix II ●●
54. Spiral matrix & 59 Spiral matrix II ●●
2022-07-05 04:50:00 【chenyfan_】
54. Spiral matrix ●●
To give you one m That's ok n Columns of the matrix matrix , Please follow Clockwise spiral sequence , Returns all elements in the matrix .
Input :matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Output :[1,2,3,4,8,12,11,10,9,5,6,7]
- simulation
The four edges traverse in order , Move 、 Judgement boundary .
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int m = matrix.size(); // m That's ok
int n = matrix[0].size(); // n Column
int top = 0, right = n-1, left = 0, buttom = m-1; // Boundary index value
int numsize = m*n;
int num = 0;
vector<int> ans(numsize);
while(true){
for(int i = left; i <= right; i++){
ans[num++] = matrix[top][i];
}
top++;
if(top>buttom) break; // Traverse Judgement boundary
for(int i = top; i <= buttom; i++){
ans[num++] = matrix[i][right];
}
right--;
if(left>right) break;
for(int i = right; i >= left; i--){
ans[num++] = matrix[buttom][i];
}
buttom--;
if(top>buttom) break;
for(int i = buttom; i >= top; i--){
ans[num++] = matrix[i][left];
}
left++;
if(left>right) break;
}
return ans;
}
};
59. Spiral matrix II ●●
Give you a positive integer n , Generate a include 1 To n 2 n^2 n2 All the elements , And the element press Clockwise order Spirally arranged n x n square matrix matrix .
Input :n = 3
Output :[[1,2,3],[8,9,4],[7,6,5]]
- Generate a n×n Empty matrix ans, Then simulate the whole inward surrounding filling process :
- Define the current left and right upper and lower boundaries l,r,t,b, Initial value num = 1, Iteration termination value numsize = n * n;
- When num <= numsize when , Always follow From left to right From top to bottom From right to left From bottom to top Fill in the sequence loop , After each filling :
- perform num += 1: Get the next number to fill in ;
- Update boundaries : For example, after filling in from left to right , Upper boundary t += 1, Equivalent to the upper boundary shrinking inward 1.
- Use num <= numsize instead of l < r || t < b As an iterative condition , In order to Solve when n In an odd number of , The problem that the central number of the matrix cannot be filled in during the iteration .
- Eventually return ans that will do .
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ans(n, vector<int>(n, 0));
int up = 0, down = n-1, left = 0, right = n-1;
int cnt = 1, num = n*n;
while(cnt <= num){
// Iteration conditions , Number of fillings <= Lattice number
for(int i = left; i <= right; ++i) ans[up][i] = cnt++; // Move right
++up;
for(int i = up; i <= down; ++i) ans[i][right] = cnt++; // Move down
--right;
for(int i = right; i >= left; --i) ans[down][i] = cnt++; // Move left
--down;
for(int i = down; i >= up; --i) ans[i][left] = cnt++; // Move upward
++left;
}
return ans;
}
};
边栏推荐
- Fluent objects and lists
- 2021 electrician Cup - high speed rail traction power supply system operation data analysis and equivalent modeling ideas + code
- 775 Div.1 C. Tyler and strings combinatorial mathematics
- Introduce Hamming distance and calculation examples
- 2022 thinking of mathematical modeling D problem of American college students / analysis of 2022 American competition D problem
- Rip notes [rip message security authentication, increase of rip interface measurement]
- Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套
- Neural networks and deep learning Chapter 3: linear model reading questions
- Setting up redis cluster cluster under Windows
- 2022 thinking of mathematical modeling a problem of American college students / analysis of 2022 American competition a problem
猜你喜欢
2022-2028 global and Chinese video coding and transcoding Market Research Report
[groovy] closure (closure call is associated with call method | call () method is defined in interface | call () method is defined in class | code example)
Séparation et combinaison de la construction du système qualité
How should programmers learn mathematics
Wan broadband access technology V EPON Technology
An article takes you to thoroughly understand descriptors
AutoCAD - full screen display
CSDN body auto generate directory
AutoCAD - graphic input and output
质量体系建设之路的分分合合
随机推荐
An article takes you to thoroughly understand descriptors
[ideas] 2021 may day mathematical modeling competition / May Day mathematical modeling ideas + references + codes
[groovy] closure closure (customize closure parameters | customize a single closure parameter | customize multiple closure parameters | specify the default value of closure parameters)
History of web page requests
AutoCAD - window zoom
Leetcode 222 number of nodes of complete binary tree
AutoCAD - lengthening
windows下Redis-cluster集群搭建
AutoCAD - Document Management
The remainder operation is a hash function
Neural networks and deep learning Chapter 2: machine learning overview reading questions
Séparation et combinaison de la construction du système qualité
54. 螺旋矩阵 & 59. 螺旋矩阵 II ●●
[groovy] closure (Introduction to closure class closure | this, owner, delegate member assignment and source code analysis)
JMeter -- distributed pressure measurement
[crampon programming] lintcode decoding Encyclopedia - 1100 strange printer
A survey of automatic speech recognition (ASR) research
[Business Research Report] top ten trends of science and technology and it in 2022 - with download link
English topic assignment (27)
Minor spanning tree