1. 程式人生 > >Leetcode_Array -- 832. Flipping an Image [easy]

Leetcode_Array -- 832. Flipping an Image [easy]

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].

給定一個只包含0、1的矩陣A,把它當做一張圖片,我們想要水平翻轉這張圖片,然後在在invert 它,最後返回結果圖片

水平翻轉意味著圖片的每一行都被顛倒,例如[1, 1, 0]水平翻轉後得到[0, 1, 1]

invert一張圖片意味著將對應元素取反,0變成1,1變成0。例如[0, 1, 1]變成[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

Solutions:

Python

class Solution:
    def flipAndInvertImage(self, A):
        """
        :type A: List[List[int]]
        :rtype: List[List[int]]
        """
        for i in range(len(A)):
            A[i] = A[i][::-1]   #等價於A[i] = A[i].reverse()
            
        for i in range(len(A)):
            for j in range(len(A[0])):
                A[i][j] = 1-A[i][j]
                
        return A
C++

(1)
class Solution {
public:
    vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
        int rowsize = A.size();
        int colsize = A[0].size();
        for(int i = 0;i<rowsize;i++){
            reverse(A[i].begin(),A[i].end());
        }
        for (int i =0;i<rowsize;i++){
            for (int j =0;j<colsize;j++){
                A[i][j] = 1-A[i][j];
            }
        }
        return A;
    }
};


(2)
class Solution {
public:
    vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
        for(vector<vector<int>>::iterator it = A.begin(); it != A.end(); it++)
            reverse(it->begin(), it->end());
        for(vector<vector<int>>::iterator it = A.begin(); it != A.end(); it++)
            for(vector<int>::iterator i = it->begin(); i != it->end(); i++)
                *i = (*i) ^ 1;
        return A;
    }
};