Я пытаюсь решить очень простую проблему в Leetcode, который работает хорошо, но при отправке сообщает: «Превышен лимит времени».
Вот вопрос: Учитывая числа целочисленного массива, верните true, если какое-либо значение встречается в массиве хотя бы дважды, и верните false, если каждый элемент различен.
Example 1 :
Input: nums = [1,2,3,1]
Output: true
Example 2 :
Input: nums = [1,2,3,4]
Output: false
Ограничения:
1 <= nums.length <= 105
-109 <= nums[i] <= 109
Вот мой код:
class Solution(object):
def containsDuplicate(self, nums): #self - boolean, nums - list
count = 0
for i in range(0,len(nums)):
for j in range(i+1, len(nums)):
if nums[i] == nums[j]:
count += 1
if count>0 :
return True
else:
return False
Мой вывод:
TLE – превышен лимит времени
вы можете просто использовать set
, чтобы отслеживать элементы, которые вы уже видели. Если вы встретите элемент, который уже есть в наборе, это означает, что элемент появляется в массиве как минимум дважды, поэтому вы можете вернуть true
или false
вот так.
def contains_duplicate(nums):
seen = set()
for num in nums:
if num in seen:
return True
seen.add(num)
return False
использование set
является лучшим подходом из-за его линейной временной сложности, что делает его более эффективным для массивов большого размера.
Или простой return len(nums) != len(set(nums))
Превышение лимита времени обычно означает, что вам следует выбрать другой подход. Пришло время узнать о наборах в Python?