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

回溯算法——排列篇

目录

一、全排列

二、全排列II


一、全排列

46. 全排列 - 力扣(LeetCode)

class Solution {List<List<Integer>> result=new ArrayList<>();LinkedList<Integer> path=new LinkedList<>();boolean[] used;public List<List<Integer>> permute(int[] nums) {used=new boolean[nums.length];backtracking(nums);return result;}public void backtracking(int[] nums){if(path.size()==nums.length){result.add(new ArrayList<>(path));return;}for(int i=0;i<nums.length;i++){if(used[i])continue;used[i]=true;path.add(nums[i]);backtracking(nums);path.removeLast();//移除最后一个添加的元素used[i]=false;//元素修改为未使用}}
}

二、全排列II

47. 全排列 II - 力扣(LeetCode)

class Solution {List<List<Integer>> result=new ArrayList<>();List<Integer> path=new ArrayList<>();public List<List<Integer>> permuteUnique(int[] nums) {boolean[] used=new boolean[nums.length];Arrays.fill(used,false);Arrays.sort(nums);backtracking(nums,used);return result;}public void backtracking(int[] nums,boolean[] used){if(path.size()==nums.length){result.add(new ArrayList<>(path));return;}for(int i=0;i<nums.length;i++){if(i>0&&nums[i]==nums[i-1]&&used[i-1]==true)continue;if(used[i]==false){used[i]=true;path.add(nums[i]);backtracking(nums,used);path.removeLast();used[i]=false;}}}
}

http://www.dtcms.com/a/204223.html

相关文章:

  • 阿里云ecs 8核 16G 内存 装有redis6 分配了3G内存,和2个tomcat 每个tomcat 4G 服务器反应迟钝,如何确认不是redis的问题
  • web.py使用时报错AttributeError: No template named image_window
  • RTMP协议解析【二】
  • 下一代电子电气架构(EEA)的关键技术
  • 运行时runtime是什么?(程序在运行过程中所依赖的环境、资源管理机制以及动态行为的总和)(包括内存分配、异常处理、线程调度、类型检查、资源访问等)
  • RAG知识库SentenceSplitter分段问题分析与优化方案
  • 操作系统理解(xv6)
  • NC028NQ472美光固态颗粒NQ484NQ485
  • 第五章 GPT模块配置
  • centos系统redis-dump安装
  • FPGA开发全流程
  • bitbar环境搭建(ruby 2.4 + rails 5.0.2)
  • MCU 上电不启动的常见原因分析与排查思路
  • Transformer到底解决什么问题?
  • R语言速查表
  • 【Django】Django DRF 中如何手动调用分页器返回分页数据(APIView,action场景)
  • Windows系统编译GSL与VS2022联合编程
  • 从零基础到最佳实践:Vue.js 系列(3/10):《组件化开发入门》
  • 链表day3
  • 【初识】内网渗透——基础概念,基本工具使用
  • 远程访问家里的路由器:异地访问内网设备或指定端口网址
  • Go语言中new与make的深度解析
  • 第二章:Android常用UI控件
  • 数据库blog4_数据库软件的设计方法与实际架构
  • 安全可控的AI底座:灯塔大模型应用开发平台全面实现国产信创兼容适配认证
  • VRRP 协议
  • 使用vue2做一个生成二维码的案例【可当组件使用】
  • 结课作业01. 用户空间 MPU6050 体感鼠标驱动程序
  • 【图像大模型】基于深度对抗网络的图像超分辨率重建技术ESRGAN深度解析
  • Mac安装redis