作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/


题目地址:https://leetcode.com/problems/flipping-an-image/description/

题目描述

Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resulting image.

To flip an image horizontally means that each row of the image is reversed. For example, flipping [1, 1, 0] horizontally results in [0, 1, 1].

To invert an image means that each 0 is replaced by 1, and each 1 is replaced by 0. For example, inverting [0, 1, 1] results in [1, 0, 0].

Example 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]]

Example 2:

Input: [[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]]
Explanation: First reverse each row: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]].
Then invert the image: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]

Notes:

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

题目大意

把一个数组分两步处理:第一步,左右翻转;第二步,把每个位置的0或者1变成1或者0.

解题方法

翻转 + 异或

就是按照两步操作就好了。这个题非常简单。先逆序,然后用异或操作,就能实现了。

时间复杂度O(N),空间复杂度O(1).超过98%.

class Solution:
def flipAndInvertImage(self, A):
"""
:type A: List[List[int]]
:rtype: List[List[int]]
"""
rows = len(A)
cols = len(A[0])
for row in range(rows):
A[row] = A[row][::-1]
for col in range(cols):
A[row][col] ^= 1
return A

直接计算

直接计算的方式看起来更美观一些。先构造一个和A一样大小的结果数组,然后第i行第j列的结果等于1-A[N - 1 - j].

时间复杂度O(N),空间复杂度O(1).超过98%.

class Solution:
def flipAndInvertImage(self, A):
"""
:type A: List[List[int]]
:rtype: List[List[int]]
"""
M, N = len(A), len(A[0])
res = [[0] * N for _ in range(M)]
for i in range(M):
for j in range(N):
res[i][j] = 1 - A[i][N - 1 - j]
return res

日期

2018 年 5 月 27 日 —— 很久没刷题了,这个是恢复的第一个题目。
2018 年 11 月 3 日 —— 雾霾的周六

最新文章

  1. php读取excel内容
  2. (原创)QuartusII设置虚拟引脚(Virtual Pin)
  3. PSP(11.2~11.9)
  4. C——第一阶段结束
  5. javascript 图片淡入淡出效果 实例源代码
  6. 性能改善之For与Foreach
  7. Spring-task-timer定时器
  8. HDOJ-三部曲一(搜索、数学)-1002-Children of the Candy Corn
  9. LeetCode解题报告:Reorder List
  10. Redis存储Session
  11. 五,ESP8266 TCP服务器多连接
  12. mac SecureCRT设置
  13. Python之数据类型转换
  14. 【spring实战第五版遇到的坑】第14章spring.cloud.config.uri和token配置项无效
  15. Python中不尽如人意的断言Assertion
  16. Qt编写自定义控件8-动画按钮组控件
  17. webAPI文件上传时文件过大404错误的问题
  18. 给echarts加个“全屏展示”
  19. php安装及配置笔记
  20. python tornado异步性能测试

热门文章

  1. linux 网络配置管理
  2. php背景透明png
  3. 进阶版的java面试
  4. MapReduce05 框架原理OutPutFormat数据输出
  5. Hadoop入门 运行环境搭建
  6. 打破砂锅问到底!HTTP和HTTPS详解
  7. C++福尔摩斯的约会
  8. Oracle—网络配置文件
  9. Linux基础命令---mysqlimport导入数据库
  10. Linux学习 - ifconfig