p14 寻找缺失的数字 (leetcode 268)

一:解题思路

我们知道2个相同的数字异或的结果为0,所以我们只需要将数组下标和数组中每个元素相异或就能够找出最后的那个缺失的数字。

二:完整代码示例 (C++版和Java版)

Time:O(n),Space:O(1)

C++版:

 class Solution 
 {
 public:
     int missingNumber(vector<int>& nums) 
     {
         int n = nums.size();
         int result = n;

         for (int i = 0; i < n; i++)
         {
             result = result ^ i^nums[i];
         }

         return result;
     }
 };

Java版:

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

 

posted @ 2020-03-10 14:43  repinkply  阅读(227)  评论(0)    收藏  举报