728x90

LeetCode-217

Contains Duplicate : 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.
note : 1 <= nums.length <= 105

Answer

        :::python

class Solution: def containsDuplicate(self, nums: List[int]) -> bool: if len(nums)==1: return False nums.sort() left = 0 while left+1 <= len(nums)-1: if nums[left]==nums[left+1]: return True left += 1 return False

Result : 634ms Memory: 27.9mb

๋ฌธ์ œ ์„ค๋ช…

"Contains Duplicate" ๋ฌธ์ œ๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์€ ๋ฐฐ์—ด ๋‚ด์—์„œ ์ธ์ ‘ํ•œ ์œ„์น˜์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ตํ•˜๋ฉด ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ๋Š”์ง€๋ฅผ ์‰ฝ๊ฒŒ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ฐฐ์—ด ๋‚ด์— ์ค‘๋ณต๋œ ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ์—๋Š” False๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ์šฐ์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ False๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ฝ”๋“œ ๋ถ„์„

์‚ฌ์šฉ์ž ์ฝ”๋“œ๋Š” ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋จผ์ €, ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ์šฐ์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ False๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ํ›„, ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„์น˜์—์„œ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ค‘๋ณต๋œ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” False๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ฝ”๋“œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nlogn)์œผ๋กœ, ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ ํƒ์ƒ‰ํ•˜๋Š” ์‹œ๊ฐ„์€ O(n)์ž…๋‹ˆ๋‹ค.

ํ‰๊ฐ€

์ด ์ฝ”๋“œ๋Š” ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ ์ค‘๋ณต๋œ ๊ฐ’์„ ํŒ๋ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ค‘๋ณต๋œ ๊ฐ’์ด ์ธ์ ‘ํ•œ ์œ„์น˜์— ์žˆ์–ด๋„ ๋†“์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด ์ฝ”๋“œ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ดํ•ด์™€ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ๋ฌผ์ด๋ผ๊ณ  ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ’€์ด

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        if len(set(nums))==len(nums):
            return False
        else: 
            return True

set()์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ตœ์†Œ O(1) remove ์‚ฌ์šฉ์‹œ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ O(n) ์ด๋‹ค. ์ค‘๋ณต์˜ ๊ฒฝ์šฐ remove ์‚ฌ์šฉ์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(n)์œผ๋กœ ๋™์ผํ•˜๋‹ค.

๋ฐ˜์‘ํ˜•

'๐Ÿข One step' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[leetcode-36] Valid Sudoku  (0) 2023.05.18
[leetcode-242] Valid Anagram  (0) 2023.05.13
How to LeetCode effectively  (0) 2023.05.10
[leetcode-706] Design HashMap  (0) 2023.05.09
[leetcode-38] Count and Say  (0) 2023.05.05
๋‹คํ–ˆ๋‹ค