子集总和问题:返回值的索引而不是值

时间:2019-02-25 17:07:03

标签: python

想知道如何对子集和问题进行扭曲。

给定一个整数列表和一个目标整数,我想从列表中计算出总计到目标的所有可能组(由 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]]

谢谢!

2 个答案:

答案 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