python算法--扑克牌的顺子

2022-07-31,,,

题目:

思路+代码:

思路
首先可以知道,边界情况带有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 

本文地址:https://blog.csdn.net/qq_36533552/article/details/107659273

《python算法--扑克牌的顺子.doc》

下载本文的Word格式文档,以方便收藏与打印。