一.解法
https://leetcode-cn.com/problems/missing-number/
要点:数学,hashmap,排序
C++用了排序的方法,遍历一遍找到0-n中不满足i=num1[i]的数。
Python用了hashmap,从0-n依次在set中找。
Java用了数学方法,把所有数字相加,和原来应该相加的值进行比较,差值即为所求。
二.Python实现
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++实现
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实现
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;
}
}