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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章