//数组nums包含0到n的所有整数,但其中缺了一个。
//请编写代码找到这个缺失的整数
//要求:在O(n)时间内完成
//例1 输入:3 0 1
// 输出:2
//例2 输入:9 6 4 2 3 5 7 0 1
// 输出:8
//思路1 :排序-》qsort快排->时间复杂度O(n*log2N)
//思路2 :(0+1+2+3……+n)-(a[0]+a[1]+a[2]+……+a[n-1])
// 时间复杂度 :O(N)
// 空间复杂度 :O(1)
//思路3 :数组中的数值在几就在第几个位置写一下这个值
// 空间复杂度 :O(N)
// 时间复杂度 :O(N)
//思路4 : 给一个值 X = 0
// X先跟【0,n】的所有值异或
// X再跟数组中的每个有值异或 最后X就是缺的数字
// 相同的数异或就得0
// 时间复杂度 :O(N) 空间复杂度 :O(1)
#include <stdio.h>
int missingNumber(int* nums,int numsSize)
{
int x = 0;
//跟【0,N】
for(int i = 0;i <= numsSize;++i)
{
x ^= i;
}
//再跟数组中的值异或
for(int i = 0;i <= numsSize;++i)
{
x ^= nums[i];
}
return x;
}
数据结构(C语言)1.时间复杂度习题——消失的数字
最新推荐文章于 2024-08-17 16:47:39 发布