消失的数字算法(3种思路解析)

消失的数字题

思路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;



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值