leetcode 448 - find-all-numbers-disappeared-in-an-array
阿新 • • 發佈:2022-05-06
Given an array nums of n integers where nums[i] is in the range [1, n], return an array of all the integers in the range [1, n] that do not appear in nums.
Example 1:
Input: nums = [4,3,2,7,8,2,3,1]
Output: [5,6]
Example 2:
Input: nums = [1,1]
Output: [2]
Constraints:
n == nums.length
1 <= n <= 105
1 <= nums[i] <= n
Follow up: Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.
來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array
class Solution { // public List<Integer> findDisappearedNumbers(int[] nums) { // int n = nums.length; // for(int num: nums){ // int x = Math.abs(num)-1; // nums[x] = 0 - Math.abs(nums[x]); // } // List<Integer> result = new ArrayList<Integer>(); // for(int i=0; i<n; ++i){ // if(nums[i] > 0){ // result.add(i+1); // } // } // return result; // } public List<Integer> findDisappearedNumbers(int[] nums) { int n = nums.length; for(int num: nums){ int x = (num - 1) % n; nums[x] += n; } List<Integer> result = new ArrayList<Integer>(); for(int i=0; i<n; ++i){ if(nums[i] <= n){ result.add(i+1); } } return result; } }