当前位置:网站首页>【回溯】全排列 II leetcode47
【回溯】全排列 II leetcode47
2022-06-30 21:30:00 【小风_】
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2] 输出:
[[1,1,2], [1,2,1], [2,1,1]] 示例 2: 输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
链接:https://leetcode.cn/problems/permutations-ii
思路:和lc46不一样的地方在于,含有重复数字,此时,借鉴数组总和II的思路,首先讲序列进行排序,然后每次遍历的时候for循环判断下一个数字是否和上一个相同,相同的自动忽略(剪枝)掉,以此达到去重的目的
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
self.ret = []
'''NOTE 1.思考递归树(根节点和中间节点是什么) 2.思考递归树的每一个状态(for循环条件) 3.思考递归树的变量有哪些(回溯函数的形参) 4.思考递归树的叶子节点是什么(到哪结束return并保存什么) '''
def helper(nums:list,his:list):
if len(nums)==0:
self.ret.append(his)
return
for idx in range(len(nums)):
if idx!=0 and nums[idx]==nums[idx-1]: # 去重小技巧
continue
helper(nums[:idx]+nums[idx+1:],his+[nums[idx]])
nums.sort()
helper(nums,[])
return self.ret
边栏推荐
猜你喜欢

3Ds Max 精模obj模型导入ArcGIS Pro (二)要点补充

个人开发的渗透测试工具Satania
笔记【JUC包以及Future介绍】

文本生成模型退化怎麼辦?SimCTG 告訴你答案

jupyter notebook/lab 切换conda环境

MySQL advanced 3

ArcGIS construction and release of simple road network data service and rest call test

科研中遇到迷茫困惑如何向前一步?如何在科研中发挥女性优势?

《ClickHouse原理解析与应用实践》读书笔记(3)

开源实习经验分享:openEuler软件包加固测试
随机推荐
WebRTC系列-网络传输之本地scoket端口
. NETCORE redis geo type
Auto-created primary key used when not defining a primary key
雷达数据处理技术
的撒啊苏丹看老司机
物联网僵尸网络Gafgyt家族与物联网设备后门漏洞利用
NCAT detailed introduction (Reprint)
ClickHouse distributed表引擎
升级kube出现unknown flag: --network-plugin
[untitled]
全面认识痛风:症状、风险因素、发病机理及管理
[grade evaluator] how to register a grade evaluator? How many passes?
Dm8: generate DM AWR Report
Prediction and regression of stacking integrated model
jupyter notebook/lab 切换conda环境
Neurotransmetteurs excitateurs - glutamate et santé cérébrale
Spatiotemporal data mining: an overview
Four Misunderstandings of Internet Marketing
个人开发的渗透测试工具Satania
Go build server Foundation