一.解法
https://leetcode-cn.com/problems/missing-number/
要點:數(shù)學,hashmap,排序
C++用了排序的方法,遍歷一遍找到0-n中不滿足i=num1[i]的數(shù)。
Python用了hashmap,從0-n依次在set中找。
Java用了數(shù)學方法,把所有數(shù)字相加,和原來應該相加的值進行比較,差值即為所求。
二.Python實現(xiàn)
class Solution:
def missingNumber(self, nums: List[int]) -> int:
numset = set(nums)
n = len(nums) + 1
for number in range(n):
if number not in numset:
return number
三.C++實現(xiàn)
class Solution {
public:
int missingNumber(vector<int>& nums) {
vector<int> nums1=nums;
int n=nums.size()-1;
sort(nums1.begin(), nums1.end());
for(int i=0;i<=n;i++){
if(i!=nums1[i]) return i;
}
return n+1;
}
};
四.java實現(xiàn)
class Solution {
public int missingNumber(int[] nums) {
int truelength=nums.length;
int truesum=0;
int sum=0;
truesum=(int)(truelength*(truelength+1)*0.5);
for(int i=0;i<nums.length;i++){
sum+=nums[i];
}
return truesum-sum;
}
}