leetcode-832-easy
Flipping an Image
思路一: 遍历数组,先对数组进行 flip 然后再对数组进行 invert
public int[][] flipAndInvertImage(int[][] image) {
int N = image.length;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N / 2; j++) {
int t = image[i][j];
image[i][j] = image[i][N - 1 - j];
image[i][N - 1 - j] = t;
}
for (int j = 0; j < N; j++) {
image[i][j] = image[i][j] == 1 ? 0 : 1;
}
}
return image;
}
思路二: 双指针,需要两两处理的数字完全分类就四种情况,对每种情况进行处理
public int[][] flipAndInvertImage(int[][] image) {
int n = image.length;
for (int i = 0; i < n; i++) {
int left = 0, right = n - 1;
while (left < right) {
if (image[i][left] == image[i][right]) {
image[i][left] ^= 1;
image[i][right] ^= 1;
}
left++;
right--;
}
if (left == right) {
image[i][left] ^= 1;
}
}
return image;
}

浙公网安备 33010602011771号