Leetcode 442) Find All Duplicates in an Array

image

  • in place로 풀기 위해서, 인덱스를 활용한다.
    • 2라는 숫자가 어레이에 나오면, index = 1인 원소를 음수 처리 해준다. (1부터 시작이라서)
    • Constraints 에서 숫자 값이 양수기 때무에 가능. 만약 음수도 있다면, 이 방법 사용하지 못한다.
class Solution {
    public List<Integer> findDuplicates(int[] nums) {
        List<Integer> lst = new ArrayList<>();

        for(int i =0;i<nums.length;i++){
            int x = Math.abs(nums[i]);
            if(nums[x-1]<0){
                lst.add(x);
            }
            nums[x-1] = -nums[x-1];
        }        
        return lst;
    }
}

다른 풀이

class Solution {
    public List<Integer> findDuplicates(int[] nums) {
        List<Integer> lst = new ArrayList<>();

        for(int i =0;i<nums.length;i++){
            if(nums[Math.abs(nums[i])-1]<0){
                lst.add(Math.abs(nums[i]));
            }
            nums[Math.abs(nums[i])-1] = -nums[Math.abs(nums[i])-1];
        }        
        return lst;
    }
}

© 2018. All rights reserved.

Powered by Hydejack v8.5.2