刷题笔记(数组)-03
Posted 康小庄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题笔记(数组)-03相关的知识,希望对你有一定的参考价值。
题目地址:面试题 01.07. 旋转矩阵 - 力扣(LeetCode) (leetcode-cn.com)
思路:
翻转后的元素的规律是 假如元素是第二列第一个,翻转后会是第二行最后一个!
1 2 3 7 4 1 4 5 6 --> 8 5 2 7 8 9 9 6 3
以 2 为例
翻转前 位置 【0】【1】
翻转后 位置 【1】【2】遍历完成之后,再将matrix_new中的结果复制到原数组中即可
class Solution {
public void rotate(int[][] matrix) {
//获取数组长度
int n=matrix.length;
//定义新的数组
int [][] matrix_new=new int[n][n];
//两次循环
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
matrix_new[j][n-i-1]= matrix[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
matrix[i][j]=matrix_new[i][j];
}
}
}
}
题目地址:面试题 01.08. 零矩阵 - 力扣(LeetCode) (leetcode-cn.com)
)
思路
- 用2个标记数组 记录每一行和每一列是否有0出现 出现就标记数组的位置为true
- 最后更新原数组
class Solution {
public void setZeroes(int[][] matrix) {
int m=matrix.length,n=matrix[0].length;
boolean[] row=new boolean[m];
boolean[] col=new boolean[n];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(matrix[i][j]==0){
row[i]=col[j]=true;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(row[i]||col[j]){
matrix[i][j]=0;
}
}
}
}
}
代码均由力扣编译器,提交通过,描述编写不当地方还请大家评论区指出!
以上是关于刷题笔记(数组)-03的主要内容,如果未能解决你的问题,请参考以下文章