【LeetCode】面试题 17.04. 消失的数字的两种解法

Question:

面试题 17.04. 消失的数字的四种解法

数组nums包含从0n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在 O ( n ) O(n) O(n)时间内完成吗?
示例 1:

输入:[3,0,1]
输出:2

示例 2:

输入:[9,6,4,2,3,5,7,0,1]
输出:8

解法:

解法一:

思路:数组nums包含从0n的所有整数,数组完整那么他的sum是一定的,只要完整减去不完整就可以得出缺少的数字

int missingNumber(int* nums, int numsSize) {
    int sum = (numsSize + 1) * numsSize / 2;
    for (int i = 0; i < numsSize; i++)
    {
        sum -= nums[i];
    }
    return sum;
}

解法二:

思路:让x=0与[0,n]异或,再让x与数组中的元素异或,就可以逮出缺少的数字

int missingNumber(int* nums, int numsSize) {
	int x = 0;
	for (int i = 0; i <= numsSize; i++)
	{
		x ^= i;
	}
	for (int i = 0; i < numsSize; i++)
	{
		x ^= nums[i];
	}
	return x;
}

你可能感兴趣的:(#,C语言,#,LeetCode,leetcode,算法,数据结构)