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

    xiaoxiao2025-01-13  19

    Leetcode - 832 Flipping an Image (Easy)

    题目描述:给定一个二维数组,先翻转每一行,例如 [1,0,0] 翻转后变为 [0,0,1];之后再倒置每一个元素,1 变为 0,0 变为 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]]

    解题思路:本题分为翻转与倒置两个步骤,但是可以将两个步骤一起分析,每一行先翻转,再倒置,如果待翻转的两个元素不同的话,翻转倒置后保持不变,例如 [1,0,0] 翻转后变为 [0,0,1],再倒置变为 [1,0,0];如果待翻转的两个元素相同,翻转倒置后元素仅为倒置后的结果,例如 [1,0,1] 翻转保持不变,倒置为 [0,1,0]。倒置可以使用异或 ^1 实现。

    public int[][] flipAndInvertImage(int[][] A) { int n = A[0].length; for (int[] row : A) { for (int i = 0 ; 2 * i < n; i++) { if (row[i] == row[n - i - 1]) { row[i] = row[n - i - 1] ^= 1; } } } return A; }
    最新回复(0)