File tree 1 file changed +6
-6
lines changed
1 file changed +6
-6
lines changed Original file line number Diff line number Diff line change @@ -18,7 +18,7 @@ Output: 3
18
18
19
19
* 不可改动数组
20
20
* 空间复杂度是` O(1) `
21
- * 时间复杂度必须低于$O(n^2)$
21
+ * 时间复杂度必须低于$ O(n^2) $
22
22
23
23
根据这几个条件,我们可以首先放弃的方法就是排序以及map来计数统计的方法来解决这个方案。
24
24
@@ -36,21 +36,21 @@ Output: 3
36
36
37
37
假设寻找数字的范围是` [left, right] `
38
38
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 $
40
40
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 $的。
42
42
43
43
### 方案二:快慢指针
44
44
45
45
链表有一种表示方法就是通过数组来存储链表。因此我们可以把这个数组看作是一个链表。对于有重复数字的数组而言,就是该数组代表的链表里有一个环。那么就可以使用Floyd算法来解决。通过该方法找到的圆环的入口就是重复的数字。
46
46
47
47
![ ] ( ../../res/Leetcode51/b.png )
48
48
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 $的长度,对上面的等式进行展开有:
51
51
$$
52
52
s = (y-2x)L - k
53
53
\\
54
54
s = (y-2x-1)L + (L - k)
55
55
$$
56
- 这个等式的意思是s的长度等于整数圈的环长减去$k $的长度,也就是一个指针如果从相遇点开始走,另外一个指针从起始点开始走的话,最终会相遇在圆环的入口点。找到了入口点,就找到了重复的数字。
56
+ 这个等式的意思是s的长度等于整数圈的环长减去$ k $的长度,也就是一个指针如果从相遇点开始走,另外一个指针从起始点开始走的话,最终会相遇在圆环的入口点。找到了入口点,就找到了重复的数字。
You can’t perform that action at this time.
0 commit comments