[leetcode]Minimum Domino Rotations For Equal Row

贪心,只要检查第一个骨牌上下是否能满足即可

class Solution:
    def minDominoRotations(self, A: List[int], B: List[int]) -> int:
        if len(A) == 0:
            return -1
        
        def checkUpDown(A, B):
            n = len(A)
            cntUp, cntDown = 0, 0
            for i in range(n):
                if cntUp != float('inf') and A[i] != A[0]:
                    if B[i] == A[0]:
                        cntUp += 1
                    else:
                        cntUp = float('inf')
                if cntDown != float('inf') and B[i] != A[0]:
                    if A[i] == A[0]:
                        cntDown += 1
                    else:
                        cntDown = float('inf')
            return cntUp, cntDown

        cntAUp, cntADown = checkUpDown(A, B)
        cntBUp, cntBDown = checkUpDown(B, A)

        maxAB = min(cntAUp, cntADown, cntBUp, cntBDown)
        if maxAB == float('inf'):
            return -1
        else:
            return maxAB
            

  

posted @ 2020-02-08 23:07  阿牧遥  阅读(112)  评论(0编辑  收藏  举报