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; }
膜拜,希望有一天我也能成为大神,加油。