码迷,mamicode.com
首页 > 其他好文 > 详细

832. 翻转图像『简单』

时间:2020-06-11 21:37:34      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:简单   nta   main   src   两种   contain   技术   system   相关   

题目来源于力扣(LeetCode

一、题目

832. 翻转图像

题目相关标签:数组

技术图片

提示:

  • 1 <= A.length = A[0].length <= 20
  • 0 <= A[i][j] <= 1

二、解题思路

  1. 存在规律:先翻转再反转,而二维数组中的元素只有 0 和 1 两种

  2. 通过左右双指针来遍历矩阵中的每个一维数组

  3. 要翻转的左右两个元素相同时,两个数字都进行取反(即 0 变成 1,1 变成 0),取反后的结果相当于既完成了翻转,也同时完成了反转

  4. 翻转的两个元素不同时,不需要改变(因为只有 0 和 1 两个元素,翻转后再反转等于没变

三、代码实现

public static int[][] flipAndInvertImage(int[][] A) {
    for (int i = 0; i < A.length; i++) {
        int[] arr = A[i];
        int left = 0;
        int right = arr.length - 1;
        // 双指针遍历每个矩阵行
        while (left <= right) {
            // 规律,要翻转的两个数字相同时,两个数字都取反(即 0 变成 1,1 变成 0)
            // 既完成了翻转,也同时完成了反转
            // 要翻转的数字不同时,不需要改变(因为只有 0 和 1 两个元素,翻转后再反转等于没变)
            if (arr[left] == arr[right]) {
                if (arr[left] == 0) {
                    arr[left] = 1;
                    arr[right] = 1;
                } else {
                    arr[left] = 0;
                    arr[right] = 0;
                }
            }
            left ++;
            right --;
        }
    }
    return A;
}

四、执行用时

技术图片

五、部分测试用例

public static void main(String[] args) {
    int[][] A = {{1, 1, 0}, {1, 0, 1}, {0, 0, 0}};
	//  output: {{1, 0, 0}, {0, 1, 0}, {1, 1, 1}}

//    int[][] A = {{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}}

    flipAndInvertImage(A);
    System.out.println(Arrays.toString(A));
}

832. 翻转图像『简单』

标签:简单   nta   main   src   两种   contain   技术   system   相关   

原文地址:https://www.cnblogs.com/zhiyin1209/p/13095930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!