LeetCode.832. Flipping an Image
阿新 • • 發佈:2019-01-06
題目的大意為給定一個二階矩陣,先水平逆序,然後再做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; }
受教了。
希望有一天我也能變成大神,加油!