268. Missing Number
Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.
For example,
Given nums = [0, 1, 3] return 2.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
本题意思是说,已经有一串数字,0-n,然后有一个数字被拿掉了,请找到这个数字
第一种解法
第一反应
就是这个实际上可以理解成,1-n这n个数字有一个被替换为0 (不包含n这个),所以解法就是1-n求和减去0-n求和,剩下的就是那个数字
func missingNumber(nums []int) int {
nums_len := len(nums)
sum := 0
for i := 0; i < nums_len; i++ {
sum += nums[i]
}
answer_num := (1 + nums_len) * nums_len / 2 - sum
return answer_num
}
第二种解法
基本上是第一种解法的变体,不过是利用位运算的特性
index跟数组index位置的值全部求异或,假设是i这个值不存在,那么最后的值就是0^i=i,也就求出来所需要寻找的数字
func missingNumber(nums []int) int {
nums_len := len(nums)
answer := nums_len
for index := 0; index < nums_len; index++ {
answer ^= index
answer ^= nums[index]
}
return answer
}