刷LeetCode吧

1.Array

1.给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。

水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。

反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。

示例 1:

输入: [[1,1,0],[1,0,1],[0,0,0]]
输出: [[1,0,0],[0,1,0],[1,1,1]]
解释: 首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];
然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]

java:
class
Solution { public int[][] flipAndInvertImage(int[][] A) { int n = A.length; //求数组长度 int i,j; int[][] B = new int[n][n]; //新建二维数组 for(i = 0;i < n;i++){ for(j = 0;j<n;j++){ B[i][n-j-1] = 1- A[i][j]; } } return B; } }//没有反转,直接新建数组倒叙赋值了 取反的话直接1减就可
1.求数组长度.length 新建二维数组int[][] B = new int[i][j]
class Solution(object):
    def flipAndInvertImage(self, A):
        """
        :type A: List[List[int]]
        :rtype: List[List[int]]
        """
        for i in range(len(A)):
            for j in range((len(A)+1)/2):
                if A[i][j] == A[i][-1-j]:
                    t = 1-A[i][j]
                    A[i][j] = A[i][-1-j] = t
                
        return A
解题思路是:
如果相对称的两个数不相同,什么操作都不需要做:A[i][j] != A[i][-1-j],如:0, 1,先交换变成1, 0,再取非又变回0, 1,故什么都不做。
如果相同,先1-取非,再赋值:A[i][j] == A[i][-1-j],同时取非。
range(len())英姿不减当年

猜你喜欢

转载自www.cnblogs.com/yundong333/p/11651199.html