saurus2
Saurus2
saurus2
전체 방문자
오늘
어제
  • 분류 전체보기
    • 개발
      • AJAX
    • ML Ops
    • Profile
    • 음식점
    • 배낭여행
    • 컴퓨터공학
      • 알고리즘 공부
      • C++
      • Sever 스터디
      • Java spring
      • 알고리즘 _ 문제해결
      • 딥러닝
      • Java 정리
      • Python
      • LeetCode 1000
      • Machine Learning Study
      • Sign language Detection Pro..
      • LeetCode Solutions
    • 비콘
    • 데일리 리포트
    • 유학일기
      • 영어 공부
      • Daily
    • AI Master Degree
      • Data Mining
      • AI and Data engineering
      • Math Foundations for Decisi..
      • Natural Language Processing

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 개발자 취업준비
  • c++
  • 리트코드
  • LeetCode
  • Python
  • 취준
  • 온라인저지
  • BFS
  • DFS
  • 딥러닝
  • 딕셔너리
  • 알고리즘문제해결
  • 백준
  • 릿코드
  • 개발자
  • 문제해결능력
  • 취업준비
  • 파이썬
  • 알고리즘
  • two pointer

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
saurus2

Saurus2

컴퓨터공학/LeetCode Solutions

[LeetCode] 217. Contains Duplicate

2022. 12. 30. 14:18

217. Contains Duplicate

Easy

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 <= 105
  • -109 <= nums[i] <= 109

문제 풀이

  • 주어진 숫자 배열에서 숫자들이 중복되는지 확인하는 문제이다.
  • 제한 사항을 보면 배열의 최대 길이가 10^5이다. 
  • 시간복잡도 O(N)으로 풀 수밖에 없는 조건이다. 
  • 숫자를 하나씩 보면서 중복이 각각 존재하는지 보려면 적어도 O(N^2)의 시간복잡도가 걸린다. 
  • 그래서 O(1) 시간에 데이터를 저장하고 확인해볼 수 있는 Hash Table 접근 방법을 사용한다. 
  • 미리 숫자를 set 에 저장하고 하나씩 돌아가면서 이미 있는 숫자이면 True를 리턴하는 방법이다.
  • set은 딕셔너리와는 달리 어떤 데이터를 중복되지 않게 저장해놓는 자료구조이다. 
  • 1, 1, 2, 2를 set에 넣으면 1, 2 만 남는다. 
  • set은 주로 중복되지 않는 데이터를 저장하여 메모리사용을 줄여 사용하는데 쓰며, 데이터를 쓰고 읽는 속도 O(1)로 빠르다.
  • for 문을 돌다가 리턴을 하는 이유는 중복이 이미 존재하면 나머지 숫자를 모두 확인할 필요가 없기 때문이다.
  • for 문이 끝나고 false를 리턴하는 이유는 이미 배열의 숫자들을 다 확인했는데 중복이 없다는 뜻이기 때문이다. 

소스 코드

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        hash_table = set()
        for num in nums:
            if num in hash_table:
                return True
            hash_table.add(num)
        return False
저작자표시

'컴퓨터공학 > LeetCode Solutions' 카테고리의 다른 글

[LeetCode] 20. Valid Parentheses  (0) 2023.01.06
[LeetCode] 412. Fizz Buzz  (0) 2022.12.30
[LeetCode] 290. Word Pattern  (0) 2022.12.30
[LeetCode] 344. Reverse String  (0) 2022.12.30
[LeetCode] 88. Merge Sorted Array  (0) 2022.12.30
    '컴퓨터공학/LeetCode Solutions' 카테고리의 다른 글
    • [LeetCode] 412. Fizz Buzz
    • [LeetCode] 290. Word Pattern
    • [LeetCode] 344. Reverse String
    • [LeetCode] 88. Merge Sorted Array
    saurus2
    saurus2
    Simple is Best

    티스토리툴바