268. Missing Number(java)

来源:互联网 发布:类似快快游戏的软件 编辑:程序博客网 时间:2024/05/21 13:39

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?

给定数组包含n个独立的数字(从1到n),找到数组中缺失的那个元素。

方法一:遍历数组所有元素做累加得到一个和,让完整的0到n的和(高斯公式)减去这个和,就得到了缺失的元素。

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

方法二:借鉴了方法一的思想,但是分别计算了i与索引i处的差值,累加得到的差值就是缺失的数字。防止和值太大超出int范围。

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

方法三:利用hash表来存储。

方法四:利用异或。让0到n(即nums.length)和数组中的所有数进行异或运算,最后得到的结果就是缺失的数。

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






原创粉丝点击