LeetCode.832. Flipping an Image
Posted xusong95
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode.832. Flipping an Image相关的知识,希望对你有一定的参考价值。
题目的大意为给定一个二阶矩阵,先水平逆序,然后再做0-1替换。
比如:
Input: [[1,1,0],[1,0,1],[0,0,0]]
Output: [[1,0,0],[0,1,0],[1,1,1]]
或者
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]]
有种最简单的做法也是比较慢的做法,就是暴力求解,时间复杂度O(n^2):
public int[][] flipAndInvertImage(int[][] A) {
int[][] result = new int[A.length][A.length];
int[] temp = new int[A.length];
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A[i].length; j++) {
result[i][A[i].length - 1 - j] = A[i][j] == 0 ? 1 : 0;
}
}
return result;
}
提交之后可以通过但是不推荐,查看其它大神提交的结题方案,发现有一个回答真是妙哉~
public int[][] flipAndInvertImage(int[][] A) {
int n = A.length;
for (int[] row : A)
for (int i = 0; i * 2 < n; i++)
if (row[i] == row[n - i - 1])
row[i] = row[n - i - 1] ^= 1;
return A;
}
受教了。
希望有一天我也能变成大神,加油!
以上是关于LeetCode.832. Flipping an Image的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode.832. Flipping an Image