p60 找到数组中缺失的数字 (leetcode 448)

一:解题思路

方法一:Time:O(n),Sapce:O(n)

方法二:Time:O(n),Sapce:O(1)

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

方法一C++:

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) 
    {
        vector<int> ret;

        if (nums.size() == 0) return ret;

        vector<bool> existed(nums.size(),false);

        for (int i = 0; i < nums.size(); i++)
        {
            existed[nums[i] - 1] = true;
        }

        for (int i = 0; i < nums.size(); i++)
        {
            if (!existed[i])
            {
                ret.push_back(i+1);
            }
        }

        return ret;
    }
};

方法一Java:

class Solution
{
    public List<Integer> findDisappearedNumbers(int[] nums)
    {
            if(nums==null||nums.length==0) return Collections.emptyList();
            List<Integer> ret=new ArrayList<>();
            boolean[] existed=new boolean[nums.length];
            
            for(int i=0;i<nums.length;i++)
            {
                existed[nums[i]-1]=true;
            }
            
            for(int i=0;i<nums.length;i++)
            {
                if(!existed[i])
                {
                    ret.add(i+1);
                }
            }
            
            return ret;
    }
}

方法二C++:

class Solution 
{
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) 
    {
        vector<int> ret;
        if (nums.size() == 0) return ret;

        for (int i = 0; i < nums.size(); i++)
        {
            int idx = abs(nums[i]) - 1;

            if (nums[idx] > 0) nums[idx] = -nums[idx];
        }

        for (int i = 0; i < nums.size(); i++)
        {
            if (nums[i] > 0)
            {
                ret.push_back(i+1);
            }
        }

        return ret;
    }
};

方法二Java:

class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) 
    {
           if(nums==null||nums.length==0) return Collections.emptyList();
           List<Integer> ret=new ArrayList<>();
           
           for(int i=0;i<nums.length;i++)
           {
               int idx=Math.abs(nums[i])-1;
               
               if(nums[idx]>0) nums[idx]=-nums[idx];
           }
           
           for(int i=0;i<nums.length;i++)
           {
               if(nums[i]>0)
               {
                   ret.add(i+1);
               }
           }
           
           return ret;
    }
}

猜你喜欢

转载自www.cnblogs.com/repinkply/p/12523438.html