牛客网 | 扑克牌顺子

LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何。为了方便起见,你可以认为大小王是0。


记录大小王的个数,然后判断是否有重复的数字,如果最大的数减最小的数大于4,则为false;

import java.util.Arrays;
public class Solution {
    public static  boolean isContinuous(int [] numbers) {
        if (numbers.length==0)  return false;
        Arrays.sort(numbers);
        int count = 0;
        
        for (int i = 0; i < numbers.length; i++) {
            if(numbers[i]==0)
                count++;
        }
        if(count>4)     return false;
        for (int i = count+1; i < numbers.length; i++) {
            if(numbers[i]==numbers[i-1])
                return false;
        }
        if(numbers[4]-numbers[count]>4) return false;
        return true;
    }
}


### 牛客网华为机试算法题目解析 #### 题目一:矩阵链相乘优化 在处理矩阵链相乘问题时,可以通过动态规划来减少不必要的计算量。例如,在给定三个矩阵 A(10×30), B(30×5), 和 C(5×60),可以按照两种方式计算 (AB)C 或者 A(BC)[^1]。前者的计算复杂度为 \(10 \times 30 \times 5 + 10 \times 5 \times 60 = 4500\) 次乘法操作;而后者则需要 \(30 \times 5 \times 60 + 10 \times 30 \times 60 = 27000\) 次乘法操作。因此选择合适的括号位置能够显著降低运算成本。 #### 题目二:统计字符串中的特定字符数量 对于统计某个子串在母串中出现次数的问题,可以直接利用 Python 的内置 `count` 方法完成此任务。下面是一个简单的实现例子: ```python str1 = input() str2 = input() print(str1.lower().count(str2.lower())) ``` 上述代码片段展示了如何忽略大小写差异并计数指定字符或子串在整个输入字符串内的存在频率[^2]。 #### 题目三:十六进制转十进制整型数值 当涉及到不同基数之间的转换时,标准库提供了便捷的方法来进行此类变换。比如使用 C++ 中的 `std::stoi` 函数可以从字符串形式读取数据,并将其解释成相应类型的值。这里提供了一个基于该技术的小程序用于演示目的: ```cpp #include <iostream> using namespace std; int main(){ string str; cin >> str; cout << stoi(str, nullptr, 16) << endl; } ``` 这段源码实现了从用户那里接收一个表示十六进制数字的字符串作为输入参数,接着输出对应的十进制表现形式的结果[^3]。 #### 题目四:二十四点游戏逻辑设计 最后考虑这样一个经典益智类小游戏——即所谓的“二十四点”。它的基本规则是从一副扑克牌里随机抽取四张卡片(假设它们上面标记有介于1到9之间任意正整数),玩家尝试运用加减乘除四种基础算术运算符以及必要的圆括号改变优先级关系使得最终表达式的求值得恰好等于24即可获胜[^4]。 以下是解决这个问题的一种可能策略框架: - 枚举所有可能的操作序列; - 对每种情况应用递归回溯搜索找到满足条件的一组解决方案之一。 虽然具体编码细节超出了当前讨论范围之外,但是理解这些概念有助于构建实际应用程序版本的基础架构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值