返回

C++描述 LeetCode 832. 翻转图像

发布时间:2023-07-26 20:55:45 193

C++描述 LeetCode 832. 翻转图像

  大家好,我叫亓官劼(qí guān jié )


给定一个二进制矩阵 ​​A​​,我们想先水平翻转图像,然后反转图像并返回结果。

水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 ​​[1, 1, 0]​​​ 的结果是 ​​[0, 1, 1]​​。

反转图片的意思是图片中的 ​​0​​​ 全部被 ​​1​​​ 替换, ​​1​​​ 全部被 ​​0​​​ 替换。例如,反转 ​​[0, 1, 1]​​​ 的结果是 ​​[1, 0, 0]​​。

示例 1:

输入:[[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]]

示例 2:

输入:[[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]]

提示:

  • ​1 <= A.length = A[0].length <= 20​
  • ​0 <= A[i][j] <= 1​

算法实现

class Solution {
public:
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
int len1 = A.size();
if(len1 == 0)
return A;
int len2 = A[0].size();
int nums[2] = {1,0};
// 水平
for(int i = 0 ; i < len1; i++){
int l = 0, r = len2-1;
while(l < r){
swap(A[i][l],A[i][r]);
l++;
r--;
}
}
// 反转
for(int i = 0 ; i < len1; i++){
for(int j = 0 ; j < len2; j++){
A[i][j] = nums[A[i][j]];
}
}
return A;
}
};

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
学点简单的Django之第一个Django程序 2023-07-26 18:13:18