LeetCode.832. Flipping an Image

Posted xusong95

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode.832. Flipping an Image相关的知识,希望对你有一定的参考价值。

题目的大意为给定一个二阶矩阵,先水平逆序,然后再做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;
    }

受教了。

希望有一天我也能变成大神,加油!

以上是关于LeetCode.832. Flipping an Image的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode.832. Flipping an Image

Leetcode#832. Flipping an Image(翻转图像)

算法leetcode|832. 翻转图像(rust和go)

算法leetcode|832. 翻转图像(rust和go)

算法leetcode|832. 翻转图像(rust和go)

832. Flipping an Image