嗨,我有這個問題

這是我的代碼
for i in range(len(nums)):
for j in range(i 1, len(nums)):
if nums[i] == nums[j]:
if abs(i - j) <= k:
print(True)
我想添加 freature 或選項,如果
if abs(i - j) <= k:
print(True)
條件沒有任何值 true 它只回傳 false 一次
我試過這個,但它回傳多個布林值
nums = [1,2,3,1]
k=3
for i in range(len(nums)):
for j in range(i 1, len(nums)):
if nums[i] == nums[j]:
if abs(i - j) <= k:
print(True)
else:
print(False)
uj5u.com熱心網友回復:
使其成為一個函式并使用 return 跳出該函式(兩個回圈)
def distictIndices(nums,k):
for i in range(len(nums)):
for j in range(i 1, len(nums)):
if nums[i] == nums[j] and abs(i - j) <= k:
reutrn True
return False
nums = [1,2,3,1]
k=3
print(distictIndices(nums,k))
uj5u.com熱心網友回復:
一種更好的(線性)方法也證明了早期回報:
def func(nums, k):
lastseen = {}
for i, num in enumerate(nums):
if num in lastseen and i - lastseen[num] <= k:
return True # ends function
lastseen[num] = i
return False
>>> func([1,2,3,1], 3)
True
>>> func([1,2,3,4,1], 3)
False
或者,使用恒定的額外空間:
from collections import deque
def func(nums, k):
q = deque(maxlen=k)
for num in nums:
if num in q:
return True
q.append(num)
return False
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/312266.html
