Skip to content

Commit 00c256d

Browse files
committed
feat: add python and java solutions to leetcode problem: No.0268
1 parent 488f25d commit 00c256d

File tree

5 files changed

+68
-4
lines changed

5 files changed

+68
-4
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
- [二进制中 1 的个数](/lcof/面试题15.%20二进制中1的个数/README.md)
118118
- [计数质数](/solution/0200-0299/0204.Count%20Primes/README.md)
119119
- [不用加减乘除做加法](/lcof/面试题65.%20不用加减乘除做加法/README.md)
120+
- [丢失的数字](/solution/0200-0299/0268.Missing%20Number/README.md)
120121

121122
### 栈和队列
122123

README_EN.md

+1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ Complete solutions to [LeetCode](https://leetcode-cn.com/problemset/all/), [LCOF
107107

108108
- [Set Mismatch](/solution/0600-0699/0645.Set%20Mismatch/README_EN.md)
109109
- [Count Primes](/solution/0200-0299/0204.Count%20Primes/README_EN.md)
110+
- [Missing Number](/solution/0200-0299/0268.Missing%20Number/README_EN.md)
110111

111112
### Stack & Queue
112113

solution/0200-0299/0268.Missing Number/README.md

+34-1
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,55 @@
2626

2727
<!-- 这里可写通用的实现逻辑 -->
2828

29+
异或求解。两个相同的数异或的结果为 0。
30+
31+
也可以用数学求解。求出 `[0..n]` 的和,减去数组中所有数的和,就得到了缺失的数字。
32+
2933
<!-- tabs:start -->
3034

3135
### **Python3**
3236

3337
<!-- 这里可写当前语言的特殊实现逻辑 -->
3438

3539
```python
36-
40+
class Solution:
41+
def missingNumber(self, nums: List[int]) -> int:
42+
res = len(nums)
43+
for i, v in enumerate(nums):
44+
res ^= (i ^ v)
45+
return res
3746
```
3847

3948
### **Java**
4049

4150
<!-- 这里可写当前语言的特殊实现逻辑 -->
4251

52+
- 异或
53+
4354
```java
55+
class Solution {
56+
public int missingNumber(int[] nums) {
57+
int res = nums.length;
58+
for (int i = 0, n = res; i < n; ++i) {
59+
res ^= (i ^ nums[i]);
60+
}
61+
return res;
62+
}
63+
}
64+
```
65+
66+
- 数学
4467

68+
```java
69+
class Solution {
70+
public int missingNumber(int[] nums) {
71+
int res = nums.length;
72+
for (int i = 0, n = res; i < n; ++i) {
73+
res += (i - nums[i]);
74+
}
75+
return res;
76+
}
77+
}
4578
```
4679

4780
### **...**

solution/0200-0299/0268.Missing Number/README_EN.md

+30-1
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,42 @@ Your algorithm should run in linear runtime complexity. Could you implement it u
3737
### **Python3**
3838

3939
```python
40-
40+
class Solution:
41+
def missingNumber(self, nums: List[int]) -> int:
42+
res = len(nums)
43+
for i, v in enumerate(nums):
44+
res ^= (i ^ v)
45+
return res
4146
```
4247

4348
### **Java**
4449

50+
- XOR
51+
4552
```java
53+
class Solution {
54+
public int missingNumber(int[] nums) {
55+
int res = nums.length;
56+
for (int i = 0, n = res; i < n; ++i) {
57+
res ^= (i ^ nums[i]);
58+
}
59+
return res;
60+
}
61+
}
62+
```
4663

64+
- Math
65+
66+
```java
67+
class Solution {
68+
public int missingNumber(int[] nums) {
69+
int res = nums.length;
70+
for (int i = 0, n = res; i < n; ++i) {
71+
res += (i - nums[i]);
72+
}
73+
return res;
74+
}
75+
}
4776
```
4877

4978
### **...**

solution/0200-0299/0268.Missing Number/Solution.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class Solution {
22
public int missingNumber(int[] nums) {
33
int res = nums.length;
4-
for(int i = 0; i < nums.length; i++){
5-
res += i - nums[i];
4+
for (int i = 0, n = res; i < n; ++i) {
5+
res ^= (i ^ nums[i]);
66
}
77
return res;
88
}

0 commit comments

Comments
 (0)