一:解题思路
方法一: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; } }