Skip to content

Commit 23150c4

Browse files
authoredFeb 7, 2022
docs: add a description of the solution to lcof problem: No.61 (doocs#703)
面试题61. 扑克牌中的顺子
1 parent fe487e9 commit 23150c4

File tree

1 file changed

+17
-2
lines changed
  • lcof/面试题61. 扑克牌中的顺子

1 file changed

+17
-2
lines changed
 

‎lcof/面试题61. 扑克牌中的顺子/README.md

+17-2
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,24 @@
2929

3030
<!-- 这里可写通用的实现逻辑 -->
3131

32-
用数组 t 记录是否存在重复的数,存在则直接返回 false。
32+
顺子不成立的核心条件:
3333

34-
遍历数组,忽略大小王(0),求出数组的最大、最小值。若最后差值超过 4,则无法构成顺子,例如:`5,6,(0),8,10`
34+
- 存在重复。
35+
- 最大值与最小值的差距超过 4(最大最小值比较不包括 0 在内)。
36+
37+
解决方案:
38+
39+
- 数组计数
40+
- 用数组 `t` 记录是否存在重复的数,存在则直接返回 `false`
41+
- 遍历数组,忽略大小王(0),求出数组的最大、最小值。若最后差值超过 4,则无法构成顺子,例如:`5,6,(0),8,10`
42+
43+
- 排序
44+
- 声明一个起始指针,初始化为 0。
45+
- 对数组进行排序,并遍历数组:
46+
- 若遍历元素为 0,将起始指针向右移。
47+
- 若遍历元素与相邻元素相同(忽略 0),则绝对不成立,`return false`
48+
- 遍历结束,比较最大值(数组末尾元素)与起始指针所指向的元素,若是两者值相差大于 4,则顺子不成立。
49+
> 起始指针所做的便是找到除 0 之外,数组当中的最小值。
3550
3651
<!-- tabs:start -->
3752

0 commit comments

Comments
 (0)
Please sign in to comment.