Filpping an Image

it2022-05-05  143

给定一个01矩阵,对矩阵进行一下操作:

水平方向翻转图像,如:[1,1,0]水平翻转之后变为[0,1,1]

倒置图像的每个元素,即用0替代1,用1替代0。如:[0,1,1]变为[1,0,0]

测试样例:

输入:[ [1,1,0],[1,0,1],[0,0,0] ]

输出:[ [1,0,0],[0,1,0],[1,1,1] ]

代码实现:

1.C++实现

#pragma once#include<vector>using namespace std;class FlipAndInverImageClass{public:    vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {        vector<vector<int>> result; vector<int> mid; for (int i = 0; i < A.size(); ++i) {            for (int j = A[i].size() - 1; j >= 0; --j) {                 //通过与1异或得到取反,让j从末尾开始实现矩阵行的翻转                 mid.push_back( A[i][j] ^ 1 );             }             result.push_back( mid );             mid.clear();         }         return result;     }};

2.Java实现

public class HelloWorld {public static void main(String[] args){int[][] array = new int[][]{{1,1,0},{1,0,1},{0,0,0}}; SolutionClass solutionClass = new SolutionClass(); int[][] result = solutionClass.flipAndInverImage(array); for(int i=0;i<result.length;++i){for(int j=0;j<result[i].length;++j){ System.out.print(result[i][j]+" "); } System.out.println(); } }}class SolutionClass{public int[][] flipAndInverImage(int[][] A) {for (int[] rows : A) {int start = 0, end = rows.length-1; while (start <= end) {int temp = rows[start]^1; rows[start] = rows[end]^1; rows[end] = temp; start++; end--; } }return A; }}

 

转载于:https://www.cnblogs.com/Tomorrow-will-be-better/p/11123680.html


最新回复(0)