在经过一个礼拜的紧张学习之后(并没有),终于又迎来了一篇反正你们都看不懂只有我能看懂的公众号文章。
好了,话不多说,直接进入正题吧
Leetcode 832
翻转图像
给定一个二进制矩阵 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]]
示例 2:
输入: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
输出: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解释: 首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]];
然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
题意解析
这道题考察的是对二维数组的理解与运用。题意也已经讲的很清晰了,先对二维数组里的每一个一维数组进行翻转,也就是顺序颠倒,在翻转完毕之后再进行反转,也就是数字相反。
接下来看看具体的代码及思路吧
Python代码
我们要知道其中最重要的一个就是函数里的A就是题目里的二维数组;
那么首先我们在进行翻转之前要知道这个二维数组里有多少个一维数组,那么我们第三行代码的意思便是直接获取到这个数字;
其次就是要开始循环遍历整个一维数组,将他们进行翻转。由于python里面有直接的函数可以直接将数组进行顺序颠倒,我也就不再额外写函数了;(高级语言就是这点好,c语言就没有)
从第四行开始一直到第七行代码,便是将这个二维数组里所有的一维数组进行循环并且翻转;
之后从第九行开始一直到十七行结束也是我们整道题的最后一个部分,反转。看上去有好几行代码但其实一点也不难;
第九行我们再次开始循环,这是对二维数组里的每个一维数组进行遍历;
第十行定义了一个变量,而这个变量是用来定位到每个一维数组里的每一个数字;
第十一行便开始对这个数组里的每一个数组进行循环遍历;
第十二行至第十五行就开始进行了判断,若遍历到的这个数字是0,便将它改成1,同样这个数字若是1,便改成0;
十六十七行便是告诉这个循环,这个数字已经被找过一遍,该去下个地方找了;
最后,只需将我们所翻转过后的这个二维数组返回给电脑,就一切大功告成啦!!
怎么样,是不是看不懂,就是要让你看不懂,才好!
领取专属 10元无门槛券
私享最新 技术干货