【leetcode100】全排列Ⅱ

server/2025/3/17 5:03:48/

1、题目描述

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

示例 1:

输入:nums = [1,1,2]
输出:
[[1,1,2],[1,2,1],[2,1,1]]

2、初始思路

2.1 思路

避免重复子集,可以使用used保存同层已经访问过的数值,以避免出现重复子集。

2.2 代码

给出used数组的两种使用方案:

(1)将同层访问过的数值加入到used中:

class Solution:def permuteUnique(self, nums: List[int]) -> List[List[int]]:path = []res = []def backtracking(nums, surplus):if len(path) == len(nums):res.append(path.copy())returnused = set()for i in range(len(surplus)):if surplus[i] in used:continueused.add(surplus[i])path.append(surplus[i])print(path) backtracking(nums, surplus[:i]+surplus[i+1:])path.pop()backtracking(nums, nums)return res

(2)创建一个与数组长度相同的used数组,如果同层访问过,则将其值保存为True:

class Solution:def permuteUnique(self, nums: List[int]) -> List[List[int]]:path = []res = []nums.sort()used = [False] * len(nums)def backtracing(nums):if len(path) == len(nums):res.append(path.copy())returnfor i in range(len(nums)):if used[i]:continueif i>0 and nums[i] == nums[i-1] and not used[i-1]:continuepath.append(nums[i])print(path)used[i] = Truebacktracing(nums)path.pop()used[i] = Falsebacktracing(nums)return res

http://www.ppmy.cn/server/175619.html

相关文章

【训练细节解读】文本智能混合分块(Mixtures of Text Chunking,MoC)引领RAG进入多粒度感知智能分块阶段

喜欢本文可以在主页订阅专栏哟 核心创新:双重评估指标与混合分块架构: 第一章:检索增强生成(RAG)技术演进与分块挑战 1.1 RAG架构的核心演变 检索增强生成(Retrieval-Augmented Generation&#xff09…

Linux 快捷键 | 终端快捷键 / 键盘快捷键

注:本文为 “Linux 快捷键” 相关文章合辑。 英文引文,机翻未校。 未整理去重。 Linux 终端常用快捷键 组合键 ~~~~~~~ 功能描述Ctrl a光标移动到行首(Ahead of line),相当于通常的 Home 键Ctrl b光标往回 (Back…

Alembic 实战指南:快速入门到FastAPI 集成

一、快速开始 1.1 简介 Alembic 是一个基于 SQLAlchemy 的数据库迁移工具,主要用于管理数据库模式(Schema)的变更,例如新增表、修改字段、删除索引等,确保数据库结构与应用程序的 ORM 模型保持一致。 Alembic 通过版…

【开源代码解读】AI检索系统R1-Searcher通过强化学习RL激励大模型LLM的搜索能力

关于R1-Searcher的报告: 第一章:引言 - AI检索系统的技术演进与R1-Searcher的创新定位 1.1 信息检索技术的范式转移 在数字化时代爆发式增长的数据洪流中,信息检索系统正经历从传统关键词匹配到语义理解驱动的根本性变革。根据IDC的统计…

我的创作纪念日 打造高效 Python 日记本应用:从基础搭建到功能优化全解析

不知不觉,在 CSDN 写博客已经有 5 年的时间了。这 5 年,就像一场充满惊喜与挑战的奇妙旅程,在我的成长之路上留下了深深浅浅的印记。到现在我的博客数据: 展现量92万阅读量31万粉丝数2万文章数200 这样的数据是我在写第一篇博客…

JVM、MySQL常见面试题(尽力局)

JVM篇 一.谈一谈JDK、JRE、JVM分别是什么,有什么联系? 1.JDK是Java工具包,里面包含了JRE、Javac编译器等。 2.JRE是java运行环境,里面包含了JVM、JavaSE标准库类等。 3.JVM是Java虚拟机,运行编译后的.class的文件&am…

用AI写小说-小白写小说的第一步Prompt

第一步:找题材 思路: 1.先按自己想写的题材搜排行榜,一般是用代表题材的tag更细化的和方向相关的关键词。 2.这10本书中最少3本在近一年内有万均以上,否则就要换题材。(Prompt如下) 3.用AI拆书,见《AI拆小说-全网最全指南(底层思路pormpt…

微信小程序面试内容整理-JavaScript

在微信小程序中,JavaScript 主要用于控制页面的逻辑和交互行为,它处理页面的数据、事件、API 调用等操作。微信小程序的 JavaScript 代码被用于处理小程序的生命周期函数、页面交互、网络请求、数据绑定等功能。 JavaScript 在微信小程序中的作用 1. 数据绑定与管理