当前位置: 移动技术网 > IT编程>脚本编程>Python > 剑指offer【61】:扑克牌的顺子

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

2020年07月30日  | 移动技术网IT编程  | 我要评论
题目:思路+代码:思路:首先可以知道,边界情况带有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的个数去判断;
时间复杂度: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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网