华为OD机试真题精讲:最长的顺子(Python/Java/C++多语言实现)
一、题目描述(2025B卷高频100分题)
在扑克牌游戏中,顺子是指一组连续递增的数字牌,相邻两张牌的数字差值为1。其中数字0为癞子(万能牌),可以替代任意一个非0数字来组成顺子。
给定一个仅包含非负整数的数组(每个元素代表一张牌的数字,0≤数字≤13,对应扑克牌的A-K和癞子0),请计算通过合理使用癞子后,能组成的最长顺子的长度。若无法组成长度≥5的顺子(扑克牌顺子的基本规则),返回0。
关键约束
- 数组长度
1 ≤ len(nums) ≤ 10^5; - 数组元素取值范围:
0 ≤ nums[i] ≤ 13; - 癞子(0)可以替代任意非0数字,每个癞子仅能使用一次;
- 重复的非0数字无法参与同一顺子(例如:[1,1,2,3,4] 无法组成长度为5的顺子,两个1只能选其一参与);
- 时间限制1秒,空间限制256MB。
示例说明
| 输入 | 输出 | 说明 |
|---|---|---|
| [0,0,1,2,3,4,5] | 7 | 两个0 |