【leetcode】491. Increasing Subsequences

题目如下:

解题思路:这题把我折腾了很久,一直没找到很合适的方法,主要是因为有重复的数字导致结果会有重复。最后尝试用字典记录满足条件的序列,保证不重复,居然Accept了。

代码如下:

class Solution(object):
    def findSubsequences(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        res = []
        queue = []
        dic = {}
        for i in range(len(nums)):
            #pair = Pair([nums[i]], [i])
            queue.append(([nums[i]], i))
        # print queue

        dic = {}

        while len(queue) > 0:
            nl,inx = queue.pop(0)
            if len(nl) > 1:
                s = ''
                for i in nl:
                    s += str(i)
                    s += ','
                s = s[:-1]
                if s not in dic:
                    dic[s] = 1
                #res.append(s)
            for i in range(inx+1,len(nums)):
                if nl[-1] <= nums[i]:
                    queue.append((nl + [nums[i]], i))
        for i in dic.iterkeys():
            rl = i.split(',')
            rl2 = []
            for i in rl:
                rl2.append(int(i))
            res.append(rl2)
        return (res)

 

posted @ 2018-05-09 14:19  seyjs  阅读(184)  评论(0编辑  收藏  举报