专栏首页小樱的经验随笔LeetCode 832. Flipping an Image

LeetCode 832. Flipping an Image

Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resulting image.

To flip an image horizontally means that each row of the image is reversed. For example, flipping [1, 1, 0] horizontally results in [0, 1, 1].

To invert an image means that each 0 is replaced by 1, and each 1 is replaced by 0. For example, inverting [0, 1, 1] results in [1, 0, 0].

Example 1:

Input: [[1,1,0],[1,0,1],[0,0,0]]
Output: [[1,0,0],[0,1,0],[1,1,1]]
Explanation: First reverse each row: [[0,1,1],[1,0,1],[0,0,0]].
Then, invert the image: [[1,0,0],[0,1,0],[1,1,1]]

Example 2:

Input: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
Output: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
Explanation: First reverse each row: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]].
Then invert the image: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]

Notes:

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

题目描述:将一个 n*n 的矩阵进行水平翻转以后再进行图像反转( 01 , 10 ),求解此时反转后的矩阵。

题目分析:其实很简单,我们将这个过程分为 2 步,第一步是水平翻转,第二步是图像反转,水平翻转我们可以利用 reverse 函数或者申请一个同样规模的矩阵去水平逆序存储矩阵值,图像反转很容易,通过遍历查找,将 1 替换成 00 替换成 1 即可。

python 代码:

class Solution(object):
    def flipAndInvertImage(self, A):
        """
        :type A: List[List[int]]
        :rtype: List[List[int]]
        """
        A_length = len(A)
        A_length_index = len(A[A_length-1])
        for i in range(A_length):
            A[i].reverse()
            
        for i in range(A_length):
            for j in range(A_length_index):
                if A[i][j] == 0:
                    A[i][j] = 1
                else:
                    A[i][j] = 0
        return A

C++ 代码:

class Solution {
public:
    vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
        vector<vector<int>> B(A.size());
        //vector<int>::reverse_iterator r_iter;
        for(int i = 0; i < B.size(); i++){
            B[i].resize(A[0].size());
        }
        
        for(int i = 0; i < A.size(); i++){
            int x = 0;
            for(int j = A[i].size()-1; j >= 0; j--){
                B[i][x] = A[i][j];
                x = x + 1;
            }
        }
        
        for(int i = 0; i < B.size(); i++){
            for(int j = 0; j < B[i].size(); j++){
                if(B[i][j] == 1){
                    B[i][j] = 0;
                }
                else{
                    B[i][j] = 1;
                }
            }
        } 
        return B;
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)

    1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得...

    Angel_Kitty
  • HDU 2566 统计硬币

    统计硬币 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java...

    Angel_Kitty
  • COGS 144. [USACO Dec07] 魅力手镯【01背包复习】

    144. [USACO Dec07] 魅力手镯 ★   输入文件:charm.in   输出文件:charm.out 简单对比 时间限制:1 s   内存限制...

    Angel_Kitty
  • 视频动作识别--Towards Good Practices for Very Deep Two-Stream ConvNets

    Towards Good Practices for Very Deep Two-stream ConvNets http://yjxiong.me/oth...

    用户1148525
  • 暑假集训之专题----拓扑排序题解

    第一单: Problem A Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/3276...

    Gxjun
  • 相机标定黑白格纸生成(提供PDF版下载)

    小白近期对相机进行了标定,关于相机标定的原理和方法网上比较多,讲解也比较详细,这里小白也就不再重复,如果有对原理不是很清晰的小伙伴,可以后台私密我。

    小白学视觉
  • 根据后序和中序遍历输出先序遍历

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • DP背包(一)

    风骨散人Chiam
  • 蓝桥杯省内模拟赛C++

    问题描述   将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。...

    杨鹏伟
  • App基于手机壳颜色换肤?先尝试一下用 KMeans 来提取图像中的主色

    上周,某公司的产品经理提了一个需求:根据用户手机壳颜色来改变 App 主题颜色。可能是由于这天马行空的需求激怒了程序员,导致程序员和产品经理打了起来,最后双双被...

    OpenCV学堂

扫码关注云+社区

领取腾讯云代金券