题目链接:https://leetcode.com/problems/missing-number/

题目:

n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array. For example,

Given nums = [0, 1, 3] return 2.

Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

思路:

1、数组是0~n,所以可以利用数组和

2、用异或操作,让nums数组和0~n异或,重复的元素异或结果为0,最后结果就是miss number

算法1:

public int missingNumber(int[] nums) {
		int sum = 0;
		for (int i : nums) {
			sum += i;
		}
		int result = nums.length * (nums.length + 1) / 2;
		if (result == sum) {
			return 0;
		} else {
			return result - sum;
		}
	}




算法2:

public int missingNumber(int[] nums) {
		int result = 0;
		for(int i=0;i<nums.length;i++){
			result ^= nums[i]^i;
		}
		result ^=nums.length;
		return result;
	}