- Date : 2021.06.27(일)
- Time : 10분
- 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.
- 1 <= nums.length <= 10^5
- -10^9 <= nums[i] <= 10^9
- Input: nums = [1,2,3,1]
- Output: true
def containsDuplicate(self, nums: list[int]) -> bool:
if len(set(nums)) == len(nums) :
return False
else :
return True
: 배열에서 중복된 값이 있는지 알아보는 방법 첫번째는 set을 이용
하는 것이다. 집합(set)은 중복을 허용하지 않는 특성이 존재하기 때문에 중복이 있는 배열을 set으로 변경한다면 갯수가 줄어들 것이다. 이를 이용해서 문제를 풀 수 있다.
def containsDuplicate(self, nums: list[int]) -> bool:
nums.sort()
for i in range(0,len(nums)-1,1):
if nums[i] == nums[i+1]:
return True
return False
: 배열에서 중복된 값이 있는지 알아보는 방법 첫번째는 for문을 이용
하는 것이다. 먼저 정렬을 시킨다. 배열을 정렬시키는 이유는 같은 값을 모이게 하여 빠르게 값을 찾아내기 위함이다. 정렬 후 for문을 이용해 연속된 배열의 값을 2개씩 출력한다. 이 2개가 같다면 중복된 값이므로 True을 출력하고 for문을 다 돈다면 중복값이 없다는 뜻이기 때문에 False를 출력한다. 이 알고리즘은 만약 중복된 값이 숫자가 작아서 앞에 위치하게 된다면 값을 아주 빠르게 찾을 수 있겠지만, 만약 중복된 숫자가 큰 값이여서 뒤에 있다면 for문을 거의 다 돌 때 쯤에 찾을 수 있기 때문에 늦게 찾아질 것 같다.