• 扑克牌顺子



    一副扑克牌,里面有两个大王,两个小王,随机从中抽出了五张牌,例如:红心A、黑桃3、小王、大王、方片5,现决定大小王可以看成任何数字,并且 A 看作 1,J 为 11,Q 为 12,K 为 13,上面的 5 张牌就可以变成 1、2、3、4、5(大小王分别看作 2 和 4)。现在,要求使用这幅牌模拟上面的过程, 如果牌能组成顺子就输出 true,否则就输出 false。为了方便起见,你可以认为大小王是 0。


    解题思路

    首先对数组排序,要满足题意,必须满足以下条件:

    • 除 0 外没有重复的数字(牌)
    • 数组长度为 5
    • 所有相邻数字间隔总数小于 5
    import java.util.Arrays;
    public class Solution {
        public boolean isContinuous(int[] numbers) {
            int numOfZero = 0;
            int numOfInterval = 0;
            Arrays.sort(numbers);
            for(int i = 0; i < numbers.length - 1; i++) {
                if(numbers[i] == 0) {
                    numOfZero++;
                    continue;
                }
                if(numbers[i] == numbers[i + 1]) {
                    return false;
                }
                numOfInterval += numbers[i + 1] - numbers[i];
            }
            if(numOfZero == 4 || (numOfInterval > 0 && numOfInterval <= 4)) {
                return true;
            }
            return false;
        }
    }
    

    也可以借助 Set 来实现题目要求,用 Set 来填充数据,0 不要放进去,要满足题意,必须满足以下条件:

    • Set 的大小加上 0 的个数必须为 5 个
    • Set 中的数值差值之和在 5 以内
    import java.util.TreeSet;
    public class Solution {
        public boolean isContinuous(int[] numbers) {
            int numOfZero = 0;
            TreeSet<Integer> set = new TreeSet<>();
            for(int i = 0; i < numbers.length; i++) {
                if(numbers[i] == 0) {
                    numOfZero++;
                } else {
                    set.add(numbers[i]);
                }
            }
            if((numOfZero + set.size()) != 5) {
                return false;
            }
            if((set.last() - set.first()) < 5) {
                return true;
            }
            return false;
        }
    }
    

  • 相关阅读:
    HDU 1269 迷宫城堡
    HDU 4771 Stealing Harry Potter's Precious
    HDU 4772 Zhuge Liang's Password
    HDU 1690 Bus System
    HDU 2112 HDU Today
    HDU 1385 Minimum Transport Cost
    HDU 1596 find the safest road
    HDU 2680 Choose the best route
    HDU 2066 一个人的旅行
    AssetBundle管理机制(下)
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/13865894.html
Copyright © 2020-2023  润新知