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 |