当前位置: 首页 > news >正文

力扣:47. 全排列 II

回溯解法思路:

1.先写一个集合来接收全部的全排列,再写一个集合来接受单个的全排列。在声明一个int【】数组来用于去重用的标记nums数组中什么元素用了的标记。同时排列一下nums数组方便去除重复的全排列。

2.调用回溯函数,终止条件为li2集合的长度等于nums.length,相当于遍历到了结尾,同时要注意相同的数字造成的重复的全排列,所以要去重。在遍历过程中假如Index【i】值为0就表示没有使用该nums【i】的值,使用的nums【i】值的Index【i】值为1。之后进行递归和回溯操作来遍历全部的全排列。

class Solution {//接收全部的全排列List<List<Integer>> li1=new ArrayList<>();//接收单个全排列List<Integer> li2=new ArrayList<>();public List<List<Integer>> permuteUnique(int[] nums) {//用于去重用的标记nums数组中什么元素用了的标记int[] Index=new int[nums.length];//排列一下nums数组方便去除重复的全排列Arrays.sort(nums);//调用回溯函数huisu(nums,Index);return li1;}//回溯函数public void huisu(int[] nums,int[] Index){//终止条件if(li2.size()==nums.length){li1.add(new ArrayList<>(li2));return ;}//遍历全部的全排列for(int i=0;i<nums.length;i++){//去重相同的数字造成的重复的全排列if(i>0&&nums[i]==nums[i-1] && Index[i-1]==0){continue;}//假如Index【i】没有用,就进行向下寻找全排列if(Index[i]==0){//同时要把Index【i】标记为已使用Index[i]=1;//把元素添加到集合li2中li2.add(nums[i]);//递归继续寻找huisu(nums,Index);//回溯节点,寻找其他节点Index[i]=0;li2.removeLast();}}}
}

相关文章:

  • Oracle12c之Sqlplus命令行窗口基本使用
  • LLaMA 模型中的Transformer架构变化
  • LabVIEW电能质量监测系统
  • 详述FlinkSql Join操作
  • c++设计模式之装饰器模式
  • 为电子表格嵌入数据库,Excel/WPS一键升级为管理系统
  • 零基础学Python之网络编程
  • 【Linux】缓冲区与缓冲区的刷新策略
  • 微信自动预约小程序开发指南:从小白到专家
  • 中兴R5300G4服务器查看服务器、主板序列号及硬盘RAID信息
  • 小白都能看懂的力扣算法详解——链表(一)
  • Linux文件和目录管理
  • 上海亚商投顾:成交量突破万亿 沪指重回2800
  • C++中的class
  • Golang 基础 环境配置和包管理
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【译】理解JavaScript:new 关键字
  • 2017 前端面试准备 - 收藏集 - 掘金
  • cookie和session
  • Javascript基础之Array数组API
  • Kibana配置logstash,报表一体化
  • Linux后台研发超实用命令总结
  • Nacos系列:Nacos的Java SDK使用
  • Rancher-k8s加速安装文档
  • use Google search engine
  • WePY 在小程序性能调优上做出的探究
  • Windows Containers 大冒险: 容器网络
  • XForms - 更强大的Form
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 前端攻城师
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 入门级的git使用指北
  • 手写双向链表LinkedList的几个常用功能
  • 微信小程序:实现悬浮返回和分享按钮
  • 写代码的正确姿势
  • 学习笔记TF060:图像语音结合,看图说话
  • 字符串匹配基础上
  • elasticsearch-head插件安装
  • HanLP分词命名实体提取详解
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • mysql面试题分组并合并列
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #{} 和 ${}区别
  • #13 yum、编译安装与sed命令的使用
  • (007)XHTML文档之标题——h1~h6
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)c52学习之旅-流水LED灯
  • (一)Java算法:二分查找
  • (转)项目管理杂谈-我所期望的新人
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core WebAPI中使用swagger版本控制,添加注释