【发布时间】:2021-08-28 00:49:28
【问题描述】:
问题:
给定由非零、非负整数 1 到 K 组成的 K,输出总和等于 K 的所有范围/区间。
例如,如果 K 等于 6,则输出应为 [[1,3], [6,6]]。对于[1,3],1+2+3 = 6,对于[6,6],6 = 6。
我的解决方案
下面是我的解决方案,但我认为时间复杂度是 O(N2)。有没有更有效的方法来做到这一点?
def targetSum(k):
nums = list(range(1,k+1))
res = []
for end in range(len(nums)):
start = 0
while start <= end:
sumhere = sum(nums[start:end+1])
if sumhere == k:
res.append([nums[start], nums[end]])
start+=1
return res
targetSum(6)
【问题讨论】:
标签: python arrays algorithm data-structures