数据结构(C语言)1.时间复杂度习题——消失的数字

//数组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;
 } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值