54. 螺旋矩阵 - 力扣(LeetCode)
思路:
考虑边界,根据顺序进行
//从左到右
//从上到下
//从右到左
//从下到上
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int m=matrix.length; //行
int n=matrix[0].length; //列
int total=n*m;
List<Integer> list=new ArrayList<>();
//最左列 最右列
int left=0;
int right=n-1;
//顶部 底部
int top=0;
int boodom=m-1;
while(list.size()<total){
//从左到右
for(int j=left;j<=right && list.size()<total;j++){
list.add(matrix[top][j]);
}
top++;
//从上到下
for(int i=top;i<=boodom && list.size()<total;i++){
list.add(matrix[i][right]);
}
right--;
//从右到左
if(top<=boodom){
for(int j=right;j>=left && list.size()<total;j--){
list.add(matrix[boodom][j]);
}
boodom--;
}
//从下到上
if(left<=right){
for(int i=boodom;i>=top && list.size()<total;i--){
list.add(matrix[i][left]);
}
left++;
}
}
return list;
}
}
48. 旋转图像 - 力扣(LeetCode)
思路:
旋转90度公式,可以自己找规律
reverse[j][n-i-1]=matrix[i][j];
class Solution {
public void rotate(int[][] matrix) {
//就是一个旋转90度
int n=matrix.length;
int[][] reverse=new int[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
reverse[j][n-i-1]=matrix[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
matrix[i][j] = reverse[i][j];
}
}
}
}