[LeetCode]268. Missing Number

来源:互联网 发布:量子力学入门书籍知乎 编辑:程序博客网 时间:2024/06/05 04:38

Point: a^b^b=a.two xor operations with the same number will eliminate the number and reveal the original number. 两个相同的数异或结果为0。一个数和两个相同的数异或的结果为它自身。


Given an array containing 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.XOR

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

2.SUM

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

3.Binary Search

public int missingNumber(int[] nums) { //binary search    Arrays.sort(nums);    int left = 0, right = nums.length, mid= (left + right)/2;    while(left<right){        mid = (left + right)/2;        if(nums[mid]>mid) right = mid;        else left = mid+1;    }    return left;}


原创粉丝点击