本地主机做网站服务器,宁波外贸公司有哪些,有没有做相册的网站,如何做网站改版1. 题目 给定一个 n x n 的二进制矩阵 image #xff0c;先 水平 翻转图像#xff0c;然后 反转 图像并返回 结果 。 水平翻转图片就是将图片的每一行都进行翻转#xff0c;即逆序。 例如#xff0c;水平翻转 [1,1,0] 的结果是 [0,1,1]。 反转图片的意思是图片中的 0 全部被…1. 题目 给定一个 n x n 的二进制矩阵 image 先 水平 翻转图像然后 反转 图像并返回 结果 。 水平翻转图片就是将图片的每一行都进行翻转即逆序。 例如水平翻转 [1,1,0] 的结果是 [0,1,1]。 反转图片的意思是图片中的 0 全部被 1 替换 1 全部被 0 替换。 例如反转 [0,1,1] 的结果是 [1,0,0]。 2. 示例 3. 分析
遍历数组交换左右两个指针元素(水平翻转)同时判断交换后二者元素为1还是为0进行替换(反转)。
class Solution {
public:vectorvectorint flipAndInvertImage(vectorvectorint image) {int n image.size();for(int i 0; i n; i){int left 0, right n-1;while(left right){swap(image[i][left], image[i][right]);if(image[i][left] 0) image[i][left] 1;else image[i][left] 0;if(image[i][right] 0) image[i][right] 1;else image[i][right] 0;left;right--;}if(left right){if(image[i][left] 1) image[i][left] 0;else image[i][left] 1;}}return image;}
}; 摘抄自官方题解
上述每个元素是否都需交换和替换是不是都必要捏答案是不是的。 情况一image[i][left] 0image[i][right] 0。对第 i 行进行水平翻转之后image[i][left] 0image[i][right] 0。进行反转之后image[i][left] 1image[i][right ] 1。情况一image[i][left] 1image[i][right] 1。对第 i 行进行水平翻转之后image[i][left] 1image[i][right] 1。进行反转之后image[i][left] 0image[i][right] 0。情况一image[i][left] 0image[i][right] 1。对第 i 行进行水平翻转之后image[i][left] 1image[i][right] 0。进行反转之后image[i][left] 0image[i][right] 1。情况一image[i][left] 1image[i][right] 0。对第 i 行进行水平翻转之后image[i][left] 0image[i][right] 1。进行反转之后image[i][left] 1image[i][right] 0。 情况一和情况二是 image[i][left] image[i][right] 的情况。在进行水平翻转和反转之后image[i][left] 和 image[i][right] 的元素值都发生了改变即元素值被反转。
情况三和情况四是 image[i][left] ≠ image[i][right] 的情况。在进行水平翻转和反转之后image[i][left] 和 image[i][right] 的元素值都发生了两次改变恢复原状。
所以当 leftright 时判断 image[i][left] 和 image[i][right] 是否相等如果相等则对 image[i][left] 和 image[i][right] 的值进行反转如果不相等则不进行任何操作。
并且采用 ^ 运算符进行水平翻转和反转操作
1 ^ 1 00 ^ 1 1
class Solution {
public:vectorvectorint flipAndInvertImage(vectorvectorint image) {int n image.size();for(int i 0; i n; i){int left 0, right n-1;while(left right){if(image[i][left] image[i][right]){image[i][left] ^ 1;image[i][right] ^ 1;}left;right--;}if(left right) image[i][left] ^ 1;}return image;}
};
时间复杂度: O(n2)
空间复杂度: O(1)