Skip to content

Commit 39ec006

Browse files
author
fuguoqiang
committed
feat (format): fix leetcode51 format
1 parent 8cdcac1 commit 39ec006

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

doc/Leetcode51/README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Output: 3
1818

1919
* 不可改动数组
2020
* 空间复杂度是`O(1)`
21-
* 时间复杂度必须低于$O(n^2)$
21+
* 时间复杂度必须低于$ O(n^2) $
2222

2323
根据这几个条件,我们可以首先放弃的方法就是排序以及map来计数统计的方法来解决这个方案。
2424

@@ -36,21 +36,21 @@ Output: 3
3636

3737
假设寻找数字的范围是`[left, right]`
3838

39-
如果数字有奇数个,那么判断条件就是 $x = count(>= mid)$ 和 $y = count(<= mid)$,如果$x == y$相等的话,那么重复的数就是mid,如果$x < y$那么重复的数字就是$(mid, right]$这个范围内的。如果$right-mid == 1 $那么重复的数字就是$right$
39+
如果数字有奇数个,那么判断条件就是 $ x = count(>= mid) $ 和 $ y = count(<= mid) $,如果$ x == y $相等的话,那么重复的数就是mid,如果$ x < y $那么重复的数字就是$ (mid, right] $这个范围内的。如果$ right-mid == 1 $那么重复的数字就是$ right $
4040

41-
如果数字有偶数个,那么判断条件就是$ x = count(> \lfloor mid \rfloor)$,$y = count( < \lceil mid \rceil)$,如果$x < y$那么重复的就是大于$mid$的,否则的话就是小于$mid$的。
41+
如果数字有偶数个,那么判断条件就是$ x = count(> \lfloor mid \rfloor) $,$ y = count( < \lceil mid \rceil) $,如果$ x < y $那么重复的就是大于$ mid $的,否则的话就是小于$ mid $的。
4242

4343
### 方案二:快慢指针
4444

4545
链表有一种表示方法就是通过数组来存储链表。因此我们可以把这个数组看作是一个链表。对于有重复数字的数组而言,就是该数组代表的链表里有一个环。那么就可以使用Floyd算法来解决。通过该方法找到的圆环的入口就是重复的数字。
4646

4747
![](../../res/Leetcode51/b.png)
4848

49-
设起点到圆环开始的距离是$s$,如上图$s$是2,圆环开始到第一次相聚的地方距离是$k$,上图$k$是3。圆环的长度是$L$,上图是4。有两个指针,$p、q$,$p$每次走一步$q$每次走两步,两者相聚的时候则p走了$x$圈走的距离是$s + xL + k$,q走了$y$圈距离是$s+ yL + k$因为q的速度是p的两倍,因此有$2(s + xL + k) = s + yL + k$
50-
我们是想$s$的长度,对上面的等式进行展开有:
49+
设起点到圆环开始的距离是$ s $,如上图$ s $是2,圆环开始到第一次相聚的地方距离是$ k $,上图$ k $是3。圆环的长度是$ L $,上图是4。有两个指针,$ p、q $,$ p $每次走一步$ q $每次走两步,两者相聚的时候则p走了$ x $圈走的距离是$ s + xL + k $,q走了$ y $圈距离是$ s+ yL + k $因为q的速度是p的两倍,因此有$ 2(s + xL + k) = s + yL + k $
50+
我们是想$ s $的长度,对上面的等式进行展开有:
5151
$$
5252
s = (y-2x)L - k
5353
\\
5454
s = (y-2x-1)L + (L - k)
5555
$$
56-
这个等式的意思是s的长度等于整数圈的环长减去$k$的长度,也就是一个指针如果从相遇点开始走,另外一个指针从起始点开始走的话,最终会相遇在圆环的入口点。找到了入口点,就找到了重复的数字。
56+
这个等式的意思是s的长度等于整数圈的环长减去$ k $的长度,也就是一个指针如果从相遇点开始走,另外一个指针从起始点开始走的话,最终会相遇在圆环的入口点。找到了入口点,就找到了重复的数字。

0 commit comments

Comments
 (0)