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())英姿不减当年