LeetCode T832,Flipping an Image
给定一个二阶矩阵,先做水平逆序,然后0,1替换。
比如:
输入: [[1,1,0],[1,0,1],[0,0,0]]
输出: [[1,0,0],[0,1,0],[1,1,1]]
解释: 首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]
我在做的时候首先想到了暴力求解,两层循环,时间复杂度为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;
}
膜拜,希望有一天我也能成为大神,加油。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。