標籤:rip esc logs question 元素 mod art list elements
Given an array of integers where 1 ≤ a[i] ≤n(n= size of array), some elements appear twice and others appear once.
Find all the elements of [1,n] inclusive that do not appear in this array.
Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.
Example:
Input:[4,3,2,7,8,2,3,1]Output:[5,6]
題目大意是給定一個數組,最大值為n,
n= size of array元素出現一次或兩次,還有沒有出現的,找到沒有出現的元素。題目要求不開闢額外空間,並且時間複雜度為o(n).這個方法比較巧妙。該題有一個重要的線索元素的最大值為數組的長度,首先遍曆數組,使用nums[nums[i] -1] = -nums[nums[i]-1]將數值置為負,在第二次遍曆中,不為負數的就是沒有出現的數值。
class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { List<Integer> result = new ArrayList<Integer>(); for(int i = 0; i < nums.length; i++) { int tmp = Math.abs(nums[i]) - 1; //index if(nums[tmp] > 0) nums[tmp] = -nums[tmp]; } for(int i = 0;i < nums.length; i++) if(nums[i] > 0) l.add(i + 1); return result; }}
448. Find All Numbers Disappeared in an Array