-
Notifications
You must be signed in to change notification settings - Fork 0
/
0268.MissingNumber.js
86 lines (61 loc) · 2.15 KB
/
0268.MissingNumber.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array.
// Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity?
//
// Example 1:
// Input: nums = [3,0,1]
// Output: 2
// Explanation: n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums.
// Example 2:
// Input: nums = [0,1]
// Output: 2
// Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.
// Example 3:
// Input: nums = [9,6,4,2,3,5,7,0,1]
// Output: 8
// Explanation: n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.
// Example 4:
// Input: nums = [0]
// Output: 1
// Explanation: n = 1 since there is 1 number, so all numbers are in the range [0,1]. 1 is the missing number in the range since it does not appear in nums.
//
// Constraints:
// n == nums.length
// 1 <= n <= 104
// 0 <= nums[i] <= n
// All the numbers of nums are unique.
// 来源:力扣(LeetCode)
// 链接:https://leetcode-cn.com/problems/missing-number
// 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
// 🎨 方法一:循环排序
// 📝 思路:利用循环排序数组的特征,nums[i] === i
/**
* @param {number[]} nums
* @return {number}
*/
var missingNumber = function (nums) {
// 循环排序
nums.sort((a, b) => a - b);
let len = nums.length;
let missed = len;// [0]
for (let i = 0; i < len; i++) {
if (nums[i] !== i) {
missed = i;
break;
}
}
return missed
};
// 🎨 方法二:位运算
// 📝 思路:利用异或性质
/**
* @param {number[]} nums
* @return {number}
*/
var missingNumber = function (nums) {
let len = nums.length;
let missed = len;// [0]
for (let i = 0; i < len; i++) {
missed ^= nums[i] ^ i
}
return missed
};