消失的数字题
思路1:Qsort快排:时间复杂度O(n*log2N)
思路2:(0+1+2+3+n)-(a[0]+a[1]+a[2]+a[n-1]) 时间复杂度O(N)
分析每种思路复杂度,选择复杂度优的即可。
#include<stdio.h>
int missingNumber(int* sums, int sumsize) {
int i;
int sum1 = 0;
int sum2 = 0;
for (i = 0; i <= sumsize; i++) {
sum1 += i;
}
for (i = 0; i < sumsize; i++) {
sum2 += sums[i];
}
return sum1 - sum2;
}
1)整数0到sumsize 相加给Sum1
2)数组sums元素相加给sum2
3)sum1-sum2得出缺失数字
思路3:异或
给一个值x=0,x跟[0,n]所有值异或,x再跟数组中每个值异或,最后x就是缺失数字。
#include<stdio.h>
int missingNumber(int* sums, int sumsize) {
int i;
int sum1 = 0;
for (i = 0; i <= sumsize; i++) {
sum1 ^= i;
}
for (i = 0; i < sumsize; i++) {
sum1 ^= sums[i];
}
return sum1;
}