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;
}
posted @ 2022-10-19 21:16  iyiluo  阅读(19)  评论(0)    收藏  举报