LeetCode简单题:268. 缺失数字(Python,C++,Java)

一.解法

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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。