zoukankan      html  css  js  c++  java
  • 419递增子序列

    from typing import List
    # 这道题的思路是将列表分成两部分,一部分是递增子序列列表。
    # 另一部分是还没有进行判断的列表。
    # 然后每次递归的进行判断就好了。
    class Solution:
    def findSubsequences(self, nums: List[int]) -> List[List[int]]:
    # 定义一个列表。用来接收递增子序列列表。
    self.nums_lists = []
    # 列表中的每一个元素都可以当做递增子序列的头部。
    for i in range(len(nums) - 1):
    # 注意这里需要列表长度减去一。
    self.dfs([nums[i]],nums[i + 1:])
    # 可能会有很多重复的列表,进行去重。
    self.nums_lists = list(set([tuple(i) for i in self.nums_lists]))
    return self.nums_lists
    # 递归函数。
    def dfs(self,now_list,last_list):
    # 首先判断递增子序列列表是否大于或者等于2
    if len(now_list) >= 2:
    self.nums_lists.append(now_list)
    # 定义一个变量接收递增子序列最大的值,用来判断后边的值是否能够加入到这个序列中。
    num = now_list[-1]
    # 遍历列表后边的元素
    for i in range(len(last_list)):
    if last_list[i] >= num:
    self.dfs(now_list + [last_list[i]],last_list[i + 1:])

    A = Solution()
    print(A.findSubsequences([4, 6, 7, 7]))
  • 相关阅读:
    使用shape来定义控件的一些显示属性
    Button颜色选择器进阶
    android用于打开各种文件的intent
    虚拟机操作
    二维码生成与读取
    input框只能输入整数
    实现FF背景透明,文字不透明
    打日志
    多选框
    时间戳
  • 原文地址:https://www.cnblogs.com/cong12586/p/13561507.html
Copyright © 2011-2022 走看看