欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python算法--扑克牌的顺子

程序员文章站 2022-06-22 08:43:06
题目:思路+代码:思路:首先可以知道,边界情况带有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: # 思路: # 首先可以知道,边界情况带有...

题目:

python算法--扑克牌的顺子

思路+代码:

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