[编程题]扑克牌顺子

扑克牌顺子

http://www.nowcoder.com/questionTerminal/762836f4d43d43ca9deb273b3de8e1f4

可以这么理解,简单来说就是要是5个数字,最大和最小差值在5以内,并且没有重复数值。用一个set来填充数据,0不要放进去。set的大小加上0的个数必须为5个。此外set中数值差值在5以内。代码如下:

import java.util.TreeSet;
public class Solution {
    public boolean isContinuous(int [] n) {
        if (n.length < 5 || n.length > 5) {
            return false;
        }
        int num = 0;
        TreeSet<Integer> set = new TreeSet<> ();
        for (int i=0; i<n.length;i++) {
            if (n[i]==0) {
                num ++;
            } else {
                set.add(n[i]);
            }
        }
        if ((num + set.size()) != 5) {
            return false;
        }
        if ((set.last() - set.first()) < 5) {
            return true;
        }
        return false;
    }
}
全部评论
这题描述的就云山雾绕。。。我还以为输入的数组代表一副牌,要自己实现随机抽取五张牌,再判断是不是顺子。。。
3 回复 分享
发布于 2020-06-09 16:13
这样做空间复杂度为O(n)了吧
2 回复 分享
发布于 2021-10-01 14:57
这么简单明了的思路竟然没有人点赞!!!
1 回复 分享
发布于 2020-03-27 23:47
太牛了吧!!!
点赞 回复 分享
发布于 2021-09-17 22:16
绝了
点赞 回复 分享
发布于 2021-05-19 08:40
会不会存在00234这样,这样的输出也保证了n + set.size() == 5,也保证了set.last()-set.first() < 5 的条件,照理应该说是输出true的,有没有大佬解释一下
点赞 回复 分享
发布于 2020-08-19 16:29
11112不是顺子吧
点赞 回复 分享
发布于 2020-04-11 17:34
我输入[1,1,1,1,0]的话是什么情况呢?
点赞 回复 分享
发布于 2020-04-01 11:49
if (n.length < 5 || n.length > 5) { return false; } if ((num + set.size()) != 5) { return false; } 这两行代码的作用重复了吧?直接用!=不是更好
点赞 回复 分享
发布于 2020-04-01 11:48
不看你的代码我都不知道原来我把题理解错了。。。。。
点赞 回复 分享
发布于 2020-03-28 12:31
牌应该在0-13之间吧,好像这个条件没有判断
点赞 回复 分享
发布于 2020-02-26 16:59
可能我不打牌,我居然没看懂这个题的意思。。。。
点赞 回复 分享
发布于 2020-02-09 11:40

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
牛至超人:把哈工大,再加大加粗,看见闪闪发光的哈工大字样,面试官直接流口水
投递字节跳动等公司6个岗位
点赞 评论 收藏
分享
评论
72
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务