想知道如何对子集和问题进行扭曲。
给定一个整数列表和一个目标整数,我想从列表中计算出总计到目标的所有可能组(由 2或3个成员组成)。
输出将是带有 2或3个数字的索引的组的二维列表。
例如,
nums = [3,0,1,0,-1,-2,0]
t = 0
ttsum(nums,t)返回[[1,3],[1,6],[2,4],[3,6],[0,4,5],[1,3,6] ,[1、2、4],[2、3、4],[2、4、6]]
谢谢!
答案 0 :(得分:0)
还可以找到代表索引的列表的组合。检查总和,然后取索引。
origin
输出:
get fetch upstream
答案 1 :(得分:0)
我尝试过此代码,但是它不起作用。是否为元素不同的列表设置检查?我正在尝试返回两个或三个不同元素的解决方案
def subsum(nums, t):
nums.sort()
arr_size=len(nums)
s=set()
for i in range(0,arr_size-2):
l=i+1
r=arr_size-1
while(l<r):
if(nums[i]+nums[l]+nums[r]==t):
s.add((nums.index(nums[i]),nums.index(nums[l]),nums.index(nums[r])))
elif(nums[i]+nums[l]+nums[r]<t):
l+=1
else:
r-=1
for i in range(0,arr_size-1):
l=i+1
r=arr_size
while(l<r):
if(nums[i]+nums[l]==t):
s.add((nums.index(nums[i]),nums.index(nums[l])))
elif(nums[i]+nums[l]<t):
l+=1
else:
r-=1
return s