Leetcode 846.一手顺子

也有一段时间没写东西了,也总算有空了,老规矩,还是来道Leetcode算法题把

846:一手顺子

爱丽丝有一手(hand)由整数数组给定的牌。 

现在她想把牌重新排列成组,使得每个组的大小都是 W,且由 W 张连续的牌组成。

如果她可以完成分组就返回 true,否则返回 false。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/hand-of-straights
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 题目比较简单,相信大家都看懂了,然后再说说解题思路把(思路既是步骤来):

1、首先这一组数据必须是W的倍数(len(hand)%W==0)

2、从这一组中找到最小的,然后找到其余W-1个,并判断这W-1个是否都在这个数组内(代码6-22行),满足则这一组放入new_list_1中

3、最后再判断最终的这个列表new_list_1里面存放的所有个数是否和一开始的数组相同,是的True,否则False

class Solution:
    def isNStraightHand(self, hand: List[int], W: int):
        new_list_1=[]
        hand_1=hand.copy()
        if len(hand)%W == 0:
            for i in range(len(hand)//W):
                new_list=[]
                try:
                    min_number=min(hand)
                except:
                    break
                new_list.append(min_number)
                hand.remove(min_number)
                for i1 in range(1,W):
                    if min_number+i1 in hand:
                        hand.remove(min_number+i1)
                        new_list.append(min_number+i1)
                if len(new_list)==W:
                    new_list_1.append(new_list)
                else:
                    break
                    return False
            if len(new_list_1)*W==len(hand_1):
                return True
            else:
                return False
        else:
            return False

提交结果:

时间是慢了点,内存消耗还是看的过去的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值