-
179일 (217. Contains Duplicate) Set, 매우 쉬움지식/알고리즘 2024. 3. 18. 21:01
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
- 접근방법
정수배열 nums를 순회하며 만약 최소 2번이상 나타나는 원소가 존재할 경우 true, 아니라면 false를 리턴한다.
1. 중복되는 원소를 체크만 하면 되므로 자료구조 Set을 사용한다.
2. 배열의 모든 원소를 Set에 붙여넣는데 만약 중복되는 원소가 존재한다면 true를 리턴한다.
3. 중복되는 원소가 존재하지 않았다면 false를 리턴한다.
- 코드class Solution { public boolean containsDuplicate(int[] nums) { Set<Integer> set = new HashSet<>(); // 1 for(int i = 0; i < nums.length; i++) { if(set.contains(nums[i])) return true; // 2 set.add(nums[i]); } return false; // 3 } }
간단하게 set의 contains() 메서드를 이용하여 풀었다. (Map도 마찬가지로 가능하다.)
PriorityQueue 의 peek()과 poll() 의 값이 같은지 확인하여 푸는 방법도 가능하긴 할 것같다.
https://leetcode.com/problems/contains-duplicate/
'지식 > 알고리즘' 카테고리의 다른 글
다음 목표 (0) 2024.03.21 180일 (621. Task Scheduler) greedy (0) 2024.03.19 178일 (404. Sum of Left Leaves) DFS (0) 2024.03.17 177일 (CodeTestcaseTestcaseTest Result525. Contiguous Array) Map, 매우 어려움 (0) 2024.03.16 176일 (CodeTestcaseTestcaseTest Result238. Product of Array Except Self) Array (0) 2024.03.15