原题链接在这里:https://leetcode.com/problems/missing-number/
第一种方法是 求和,然后挨个减掉,剩余的值就是结果,因为如果是全的,那么sum = n*(n+1)/2.
第二种方法是从前往后做bit Manipulation, res初始为0,每次保留结果 和 (i+1)^nums[i] 取结果,方法非常巧妙。
AC Java:
1 public class Solution { 2 public int missingNumber(int[] nums) { 3 /* 4 //Method 1 5 if(nums == null || nums.length == 0){ 6 return 0; 7 } 8 int n = nums.length; 9 int sum = 0; 10 for(int i = 0; i<nums.length; i++){ 11 sum+=nums[i]; 12 } 13 return n*(n+1)/2 - sum; 14 */ 15 //Method 2 16 if(nums == null || nums.length == 0){ 17 return 0; 18 } 19 int res = 0; 20 for(int i = 0; i<nums.length; i++){ 21 res ^= (i+1)^nums[i]; 22 } 23 return res; 24 } 25 }
原文:http://www.cnblogs.com/Dylan-Java-NYC/p/4881177.html