Q48反转矩阵
思路
矩阵的题要么一种顺序遍历,要么反转,可能是先左右再上下,然后再转置啥的
注意两个位置的交换
出错
需要先转置,然后每一行再反转
出错的地方,转置
错误代码
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) { //错在j=0
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
正确代码
for (int i = 0; i < row; i++) {
for (int j = i; j < col; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
相当于反转完又反转回去了
代码
class Solution {
public void rotate(int[][] matrix) {
// 先转置
int row = matrix.length;
int col = matrix[0].length;
for (int i = 0; i < row; i++) {
for (int j = i; j < col; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
for (int i = 0; i < row; i++) {
for (int j = i; j < col; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
for (int i = 0; i < row; i++) {
int left = 0, right =col-1;
while (left < right ){
int tmp = matrix[i][left];
matrix[i][left] = matrix[i][right];
matrix[i][right] = tmp;
left++;
right--;
}
}
}
}
原文地址:https://blog.csdn.net/weixin_44554979/article/details/142351964
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!