前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 【832、1007】

Leetcode 【832、1007】

作者头像
echobingo
发布2019-06-24 10:28:36
3670
发布2019-06-24 10:28:36
举报
问题描述:【Array】832. Flipping an Image
解题思路:

偷个懒水一道,题目即解题方法。时间复杂度 O(n^2),空间复杂度 O(1)。

Python3 实现:
class Solution:
    def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]:
        row, col = len(A), len(A[0])
        for i in range(row):  # 翻转每行数字
            for j in range(col//2):
                A[i][j], A[i][col-1-j] = A[i][col-1-j], A[i][j]
        for i in range(row):  # 翻转01
            for j in range(col):
                A[i][j] = 1 if A[i][j] == 0 else 0
        return A
问题描述:【Array】1007. Minimum Domino Rotations For Equal Row
解题思路:

因为多米诺骨牌中只有 1~6 这六种数字,因此对每个数字 i,把数组 A(或数组 B) 全部变为 i 即可,每次更新最小翻转次数。

  • 先利用数组 B,通过翻转,使 A 全部变成相等的数字;
  • 再利用数组 A,通过翻转,使 B 全部变成相等的数字。

这样总共做两次,取两次中的最小翻转次数。时间复杂度为 O(n)。

Python3 实现:
class Solution:
    def minDominoRotations(self, A: List[int], B: List[int]) -> int:
        def compare(A, B):
            min_ = float("inf")
            for i in range(1, 7):
                cnt = 0
                flag = True
                for j in range(len(B)):
                    if A[j] != i and B[j] == i:  # 将B中的数与A翻转
                        cnt += 1
                    elif A[j] == i:  # A不用翻转
                        continue
                    else:  # A无法变成全等的数字
                        flag = False
                        break
                if flag:
                    min_ = min(min_, cnt)  # 更新最小值
            return min_
        
        minA = compare(A, B)  # 利用B翻转使A全等
        minB = compare(B, A)  # 利用A翻转使B全等
        min_ = min(minA, minB)
        return min_ if min_ != float("inf") else -1  # 如果都无法翻转返回-1
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述:【Array】832. Flipping an Image
  • 解题思路:
  • Python3 实现:
  • 问题描述:【Array】1007. Minimum Domino Rotations For Equal Row
  • 解题思路:
  • Python3 实现:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档