ETC/Algorithm

[Leetcode] Contains Duplicate

Pazery는ENFJ 2021. 12. 9. 11:42
반응형

문제 설명

Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.

 

Example 1:

Input: nums = [1,2,3,1]
Output: true

Example 2:

Input: nums = [1,2,3,4]
Output: false

Example 3:

Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true

 

Constraints:

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

 


이번 문제는 굉장히 간단했다.

해결 하는 방법이야 많겠지만 이 문제의 관건은 시간 복잡도라고 생각하여 반복을 줄이기 위해 고민을 해봤다.

이전에 HashMap 을 이용해서 풀었던 Two Sum문제가 갑자기 생각났다.

 

[LeetCode] problem 1. Two Sum (Using HashMap)

지난번에 Two-Sum을 BruteForce 방식으로 풀고 나서 시간을 단축하기 위해 HashMap을 쓰고 싶다 라는 생각을 했었다. [LeetCode] problem 1. Two Sum Description. Given an array of integers nums and an inte..

itkevin.tistory.com

반복문을 돌리면서 배열 값을 Hash에 넣을 때 중복 체크를 하고 중복 발생되는 시점에 바로 리턴!!

 

class Solution {
    public boolean containsDuplicate(int[] nums) {
        HashMap<Integer, Integer> justSolo = new HashMap<Integer, Integer>();
        int numsLength = nums.length;
        for(int idx = 0; idx < numsLength; idx++){
            if(!justSolo.containsKey(nums[idx])){
                justSolo.put(nums[idx], idx);
            }else{
                return true;
            }
        }
        return false;
    }

결과는 !!!

한 번에 통과!! Nice

 

 

반응형