[leetcode]Missing Number
阿新 • • 發佈:2018-12-04
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n-1
, find the one that is missing from the array.
Example 1:
Input: [3,0,1] Output: 2
分析:
找出陣列中0~n-1缺失的數字。可以對陣列排序,如果排好序的兩個數字之差不為1,則中間的數就是缺失的數字;如果遍歷到最後兩兩之間都差1,則缺的是最大的數字;如果陣列首位不為0,則缺失的數字為0。
class Solution { public: int missingNumber(vector<int>& nums) { sort(nums.begin() , nums.end()); if(nums[0] != 0) return 0; for(int i=1; i<nums.size(); i++) { if(nums[i] - nums[i-1] != 1) return nums[i]-1; } return nums[nums.size()-1]+1; } };
當然還有更簡單的做法,即把數組裡的所有元素相加,與0~n-1之間的整數之和相比,兩者之差即為少的數。
class Solution { public: int missingNumber(vector<int>& nums) { int sum = 0; int len = nums.size(); for(int i=0; i<nums.size(); i++) { sum += nums[i]; } return (1+len)*len/2-sum; } };