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]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24493.html
標籤:Python
下一篇:459重復的子字串
