剑指offer【61】:扑克牌的顺子

题目:

剑指offer【61】:扑克牌的顺子_第1张图片

思路+代码:

思路
首先可以知道,边界情况带有2个0时,max-min < 5; 所以只要这5个数除0之外不重复,且max-min <5,那么就一定是连续的;不需要具体的根据0的个数去判断;
时间复杂度:O(n)
空间复杂度:O(n); 一个数set()判重是O(1)

class Solution:
    def isStraight(self, nums: List[int]) -> bool:
        # 思路:
        #   首先可以知道,边界情况带有2个0时,max-min < 5;  所以只要这5个数除0之外不重复,且max-min <5,那么就一定是连续的;不需要具体的根据0的个数去判断;
        repeat = set()
        ma, mi = 0, 14
        for num in nums:
            if num == 0: continue
            ma = max(num, ma)
            mi = min(num, mi)
            if num not in repeat:
                repeat.add(num) 
            else:
                return False
        return ma - mi < 5 

你可能感兴趣的:(剑指offer,扑克牌的顺子)