【题目描述】
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
【示例1】
输入: [3,0,1]
输出: 2
【示例2】
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
【Swift代码实现】
1、数学方法实现,(0-n的和) 减去 (给出数组元素之和)= 所求值
func missingNumber(_ nums: [Int]) -> Int {
let sum = nums.count * (nums.count + 1) / 2
var s = 0
for num in nums {
s+=num
}
return sum-s
}
2、异或运算
func missingNumber(_ nums: [Int]) -> Int {
var result = nums.count
for num in 0..<nums.count {
result ^= nums[num]
result ^= num
}
return result
}
异或运算有以下特性:
0^0 = 0,
1^0 = 1,
0^1 = 1,
1^1 = 0;
(1) 0 ^ 0=0,0^1=1 0异或任何数=任何数
(2) 1 ^ 0=1,1^1=0 1异或任何数-任何数取反
(3) 任何数异或自己=把自己置0
网友评论