[Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

news2024/11/13 20:44:45

目录

一、题目描述

二、整体思路

三、代码


一、题目描述

原题地址

二、整体思路

        和上一道Leetcode46相比,有变化的地方是要排除重复组合的情况。那么在组合问题中去除重复组合的方法是先对数组进行排序,然后在回溯函数中判断当前元素与上一个元素是否相同,若相同则直接访问下一个元素。在全排列问题中要稍微改一下。

        以{1,1,2}为例

三、代码

class Solution {
    List<List<Integer>> res=new ArrayList<>();
    List<Integer> temp=new ArrayList<>();
    public List<List<Integer>> permuteUnique(int[] nums) {
        boolean[] visited=new boolean[nums.length];
        Arrays.sort(nums);
        backtrace(visited,nums);
        return res;
    }
    void backtrace(boolean[] visited,int[] nums){
        if(temp.size()==nums.length){
            res.add(new ArrayList<>(temp));
        }
        for(int i=0;i<nums.length;i++){
            if(i>0 && visited[i-1]!=true && nums[i]==nums[i-1]){
                continue;
            }
            if(visited[i]){
                continue;
            }
            temp.add(nums[i]);
            visited[i]=true;
            backtrace(visited,nums);
            visited[i]=false;
            temp.remove(temp.size()-1);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotaemon:开源的RAG UI

检索增强生成 (RAG) 已成为一种改变游戏规则的方法&#xff0c;可增强大型语言模型的功能。Kotaemon 是由 Cinnamon 开发的开源项目&#xff0c;它站在这项创新的最前沿&#xff0c;提供了一个简洁、可定制且功能丰富的基于 RAG 的用户界面&#xff0c;用于与文档聊天。 Kotae…

【再回顾面向对象】,关键字Satic、final

再回顾面对对象 object&#xff1a;所有类的祖先&#xff0c;所有类的方法 GC&#xff1a;垃圾回收站 一般不会回收对象——Car c new Car(); toString() Hashchde要跟地址对应 尽量不要自己产生跟指针不一样&#xff0c;指针是直接指向地址像是数组的索引找的时候可能会有…

AcWing 902. 最短编辑距离

视频讲解&#xff1a; 【E07 线性DP 编辑距离】 两套代码的字符串存储数组都是从1开始存储的&#xff01;&#xff01;&#xff01;&#xff01; 硬套公式&#xff1a; #include<iostream> #include<algorithm> const int N 1010; using namespace std; int …

文心快码前端工程师观点分享:人机协同新模式的探索之路(一)

&#x1f381;&#x1f449;点击进入文心快码 Baidu Comate 官网&#xff0c;体验智能编码之旅&#xff0c;还有超多福利&#xff01;&#x1f381; 本系列视频来自百度工程效能部的前端研发经理杨经纬&#xff0c;她在由开源中国主办的“AI编程革新研发效能”OSC源创会杭州站1…

mysql基础练习题 1082.销售分析1 (力扣)

1082.编写解决方案&#xff0c;找出总销售额最高的销售者&#xff0c;如果有并列的&#xff0c;就都展示出来。 题目链接&#xff1a; https://leetcode.cn/problems/sales-analysis-i/description/ 建表插入数据&#xff1a; Create table If Not Exists Product (product…

[数据集][目标检测]玉米病害检测数据集VOC+YOLO格式6000张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6000 标注数量(xml文件个数)&#xff1a;6000 标注数量(txt文件个数)&#xff1a;6000 标注…

提升学术写作效率:ChatGPT的70个必知技巧!

于其卓越的性能&#xff0c;ChatGPT极大地提升了各行各业的工作效率。正确运用关键词是激发ChatGPT潜能的关键。歪歪学长精心挑选了一系列关键词&#xff0c;通过这些关键词的运用&#xff0c;不仅能简化写作流程&#xff0c;还能提升学术研究成果。共有14个方面&#xff0c;全…

Java 入门指南:Java 并发编程 —— ReentrantLock 实现悲观锁(Pessimistic Locking)

悲观锁 悲观锁&#xff08;Pessimistic Locking&#xff09;是一种悲观的并发控制机制&#xff0c;它基于悲观的假设&#xff0c;即并发冲突会时常发生&#xff0c;因此在访问共享资源&#xff08;如数据库记录或共享变量&#xff09;之前&#xff0c;会先获取独占性的锁&…

内存管理篇-17解开页表的神秘面纱-下

1.页表初探遗留问题-页表的创建过程 使用MMU之前&#xff0c;页表要准备好&#xff0c;怎么准备的&#xff1f;如何把物理内存通过section映射构建页表页表的创建过程分析&#xff1a;__create_page_tables--创建临时页表&#xff0c;然后在开启MMU 页表的大小和用途页表在内存…

您应该使用哪个矢量数据库? 选择最适合您需求的数据库

导言 矢量数据库已成为存储非结构化和结构化数据表示并编制索引的首选。 这些表征被称为向量嵌入&#xff0c;由嵌入模型生成。 向量存储在利用深度学习模型&#xff08;尤其是大型语言模型&#xff09;的应用开发中发挥着至关重要的作用。 什么是矢量数据库&#xff1f; 在…

中国文化艺术孙溟展浅析《绛帖》

孙溟展浅析《绛帖》 《绛帖》是汇集摹刻众多名帖。北宋时潘师旦共摹刻二十卷&#xff0c;以《淳化阁帖》为基础有增加和删减&#xff0c;因为是在降州《今山西新降》摹刻的故此而得名。 《绛帖》 《绛帖》 《绛帖》 《绛帖》 据传潘师旦去世后&#xff0c;他的两个儿子各…

双硬盘双系统怎么装?双硬盘双系统安装教程(win7+win10双系统)

最近有很网友想双硬盘装双系统&#xff0c;考虑到如果哪块硬盘坏了我另一块硬盘还可以启动&#xff0c;以防万一硬盘坏了一块无法使用问题&#xff0c;今天小编给大家带来的双硬盘双系统方法教程。 相关推荐&#xff1a; 如何安装双系统?安装双系统详细步骤 双系统怎么设置启动…

个人旅游网(2.1)——使用阿里云在springboot项目中发送短信

文章目录 一、背景介绍二、详细步骤2.1、申请资质2.2、申请签名2.3、申请模板2.4、申请accessKey秘钥对2.5、SDK的使用[!]2.5.1、项目中导入依赖2.5.2、发短信的工具类 一、背景介绍 验证码发送背后的功能原理图&#xff1a; 想要在项目中实现上述发送验证码的功能&#xff0c…

操作系统面试真题总结(三)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 什么是进程&#xff1f; 在操作系统中&#xff0c;进程是指正在执…

8月31复盘日记

8月31复盘日记 前言今日感恩今日记录今日感悟今日名言 前言 昨天因为回到宿舍比较晚&#xff0c;所以来不及进行记录。   昨天早上五点多就醒了&#xff0c;可能是睡眠质量特别好&#xff0c;基本一倒头就是深度睡眠。所以我直接就起床去健身房运动&#xff0c;练了臀和核心&…

FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 路径参数

遗留的问题 3、FastAPI4、MySQL85、SQLModel&#xff0c;和FastAPI框架是同一个作者&#xff0c;两者结合比较好用&#xff0c;但是学习成本较高&#xff0c;使用难度稍大6、Vue37、Tailwindcss8、Ant Design Vue&#xff0c;UI组件库9、数据同步&#xff1a;有一个API&#x…

基于卷积神经网络的磨削平板类零件擦伤检测

基于卷积神经网络的磨削平板类零件擦伤检测 前言正文 前言 还记得读研那会儿刚学习完了卷积神经网络&#xff0c;初步学会了最基础的分类问题&#xff0c;当时也有点python基础&#xff0c;同时对TensorFlow也有点入门了。正好我的课题中有一类缺陷比较难以用传统方法识别判断&…

Vue60 插槽

插槽 作用&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件间通信的方式&#xff0c;适用于 父组件 > 子组件 。 分类&#xff1a;默认插槽、具名插槽、作用域插槽 使用方式&#xff1a; 默认插槽&#xff1a; 父组件中&#xff1a;<Cat…

聊聊 OceanBase 资源管理

OceanBase 是分布式多租户架构数据库&#xff0c;其分布式集群从资源角度看可以分成集群、Zone、OB Server、资源池和租户等几个层次。 今天我们从集群和资源两个层次梳理 OceanBase 资源管理相关的概念。 OceanBase 集群管理 OceanBase 集群包含若干个Zone&#xff0c;一个Z…

CRE6511KL 原边SOP7电源芯片

CRE6511KL 是一款内置高压 BJT 功率开关管,5W多模式原边控制的开关电源芯片。CRE6511KL较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE6511KL 提供了极为全面和性能优异的智能化保护功能&#xff0c;包括逐周期过流保护、软启动、芯片过温保护、输出过…