2018年6月20日 星期三

[LeetCode] 832. Flipping an Image

轉自LeetCode

Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resulting image.
To flip an image horizontally means that each row of the image is reversed.  For example, flipping [1, 1, 0] horizontally results in [0, 1, 1].
To invert an image means that each 0 is replaced by 1, and each 1 is replaced by 0. For example, inverting [0, 1, 1] results in [1, 0, 0].
Example 1:
Input: [[1,1,0],[1,0,1],[0,0,0]]
Output: [[1,0,0],[0,1,0],[1,1,1]]
Explanation: First reverse each row: [[0,1,1],[1,0,1],[0,0,0]].
Then, invert the image: [[1,0,0],[0,1,0],[1,1,1]]
Example 2:
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]]
Explanation: First reverse each row: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]].
Then invert the image: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
Notes:
  • 1 <= A.length = A[0].length <= 20
  • 0 <= A[i][j] <= 1
<Solution>

想法如下
  • 直接按照題意反轉 array,並且對每個值和 1 做 XOR ( 0^1 -> 1, 1^1 -> 0)
  • 使用 (len+1) / 2 來當作 upperBound,這樣就可以歷遍前半部的數字,包含中間的數字
code 如下

Java

沒有留言:

張貼留言