开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情
题目 leetcode.cn/
- 给定一个
n x n的二进制矩阵image,先 水平 翻转图像,然后 反转 图像并返回 结果 。 - 水平翻转图片就是将图片的每一行都进行翻转,即逆序。
- 例如,水平翻转
[1,1,0]的结果是[0,1,1]。
- 例如,水平翻转
- 反转图片的意思是图片中的
0全部被1替换,1全部被0替换。- 例如,反转
[0,1,1]的结果是[1,0,0]。
- 例如,反转
示例
-
输入: image = [[1,1,0],[1,0,1],[0,0,0]] -
输出: [[1,0,0],[0,1,0],[1,1,1]] -
解释:- 首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];
- 然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]
-
输入: image = [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]] -
输出: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]] -
解释:- 首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]];
- 然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
提示
n == image.lengthn == image[i].length1 <= n <= 20images[i][j]==0或1.
代码
function flipAndInvertImage(image: number[][]): number[][] {
let result = [];
for(let i = 0; i < image.length; i++){
let item = [];
for(let j = image[i].length - 1; j >= 0; j--){
if(image[i][j]){
item.push(0);
} else {
item.push(1);
}
}
result.push(item)
}
return result;
};
思路
- 首先分析下题目的意思
- 其实题目说的很明白,
翻转和反转,翻转就是将数组中前后的顺序颠倒过来,反转就是将数字0变成1,数字1变成0
- 其实题目说的很明白,
- 了解清楚要干什么后就可以开始了
- 首先第一步就是要翻转数组了,其实大概率会想到数组的
reverse方法,因为这个方法就是用来颠倒数组前后顺序的,但是我们这里不写这个,因为写这个方法的话每一个子数组都要调用一遍这个方法 - 这里在内循环遍历的时候从数组的最后一位开始读取,并且读取的时候顺便判断他的值,如果是
0就赋值为1,如果是1就赋值为0,这样就实现了翻转和反转一步到位,不用每次外循环都要先调用数组的reverse方法了
- 首先第一步就是要翻转数组了,其实大概率会想到数组的