Skip to content

Commit 419b208

Browse files
committed
kaili-yang fix aborting 0645.Set Mismatch/README.md
1 parent fd85a15 commit 419b208

File tree

1 file changed

+0
-12
lines changed
  • solution/0600-0699/0645.Set Mismatch

1 file changed

+0
-12
lines changed

solution/0600-0699/0645.Set Mismatch/README.md

-12
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,6 @@
4343

4444
**方法一:数学**
4545

46-
<<<<<<< HEAD
47-
首先明确,两个相同的数异或之后的结果为 0。对该数组所有元素以及 `i∈[1, n]` 所有数字进行异或运算,这样可以消除出现两次的数字,只留下缺失的数字和重复的数字,即 `eor = a ^ b`
48-
49-
使用按位与运算符 `&` 和取反运算符 `~`,从异或结果 eor 中找到最右边的`置位位`(在二进制表示中从右向左数的第一个为1的位)用来区分缺失数字和重复数字的位置,即 `eor & (~eor + 1)`
50-
51-
之后遍历数组所有元素以及 `i∈[1, n]` 所有数字,根据`置位位`将数字分为两组,一组是在置位位上为 0 的数字,另一组是在置位位上为 1 的数字, 二进制位为 0 的元素异或到 `a`,即缺失的数字。
52-
53-
遍历结束后 `b = eor ^ a``b`即重复的数字,返回结果即可。
54-
55-
时间复杂度 `O(n)`, 位运算解法空间复杂度 `O(1)`
56-
=======
5746
我们用 $s_1$ 表示 $[1,..n]$ 所有数字的和,用 $s_2$ 表示数组 $nums$ 去重后的数字和,用 $s$ 表示数组 $nums$ 的数字和。
5847

5948
那么 $s - s_2$ 就是重复的数字,而 $s_1 - s_2$ 就是缺失的数字。
@@ -77,7 +66,6 @@
7766
接下来我们只需要判断 $a$ 和 $b$ 哪个数字是重复的数字,哪个数字是缺失的数字即可。因此,遍历数组 $nums$,对于遍历到的数字 $x$,如果 $x=a$,那么 $a$ 就是重复的数字,返回 $[a, b]$,否则遍历结束,返回 $[b, a]$。
7867

7968
时间复杂度 $O(n)$,其中 $n$ 是数组 $nums$ 的长度。空间复杂度 $O(1)$,仅使用常数大小的额外空间。
80-
>>>>>>> upstream/main
8169

8270
<!-- tabs:start -->
8371

0 commit comments

Comments
 (0)