2025/04/23 2

[배열,해시테이블] LeetCode 219번 문제 학습

문제 설명Contains Duplicate II는 정수 배열 nums와 정수 k가 주어졌을 때, 중복된 숫자가 있고 그 숫자들의 인덱스 차이가 k 이하인지 확인하는 문제임. nums[i] == nums[j]이고 |i - j| 푼 과정해시맵으로 풀었음. map[int]int 만들어서 숫자와 그 인덱스를 저장함. 배열 순회하면서 숫자 v가 맵에 이미 있으면, 현재 인덱스 i와 이전 인덱스 val의 차이 i - val이 k 이하면 true 리턴. 아니면 맵에 v의 인덱스를 i로 갱신. 끝까지 중복 없거나 조건 안 맞으면 false. 코드 간단하고 문제 요구사항 딱 맞췄음.알고리즘 분석해시맵 썼음. 맵에 숫자 저장/체크는 O(1), 배열 한 번 순회하니까 총 시간 O(n). 공간은 맵 때문에 O(n). 정렬 방..

카테고리 없음 2025.04.23

[배열,해시테이블,정렬] LeetCode 217번 문제 학습

문제 설명Contains Duplicate는 정수 배열 nums에서 중복 숫자가 있는지 확인하는 문제임. 중복 있으면 true, 없으면 false를 리턴하면 됨. 예를 들어, [1,2,3,1]은 1이 두 번 나와서 true, [1,2,3,4]는 중복 없어서 false임. 배열 길이는 0 이상이고, 시간복잡도 O(n log n) 이하나 O(n)으로 푸는 게 좋음.푼 과정두 가지 방법으로 풀었음. 첫 번째는 정렬 방식. sort.Ints로 배열을 오름차순 정렬하고, 루프 돌면서 nums[i]랑 nums[i-1] 비교해서 같으면 true. 중복 없으면 false. 두 번째는 해시셋 방식. map[int]bool 만들어서 숫자 하나씩 보면서 이미 맵에 있으면 true, 없으면 맵에 넣음. 끝까지 중복 없으면 f..

leetcode , 백준 2025.04.23