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

力扣刷题46. 全排列

46. 全排列 - 力扣(LeetCode)

使用dfs搜索,查找所有的情况,首先定义所有的链表集合list,在定义每一种情况的链表res,在主函数中遍历所有的初始元素,首先初始化res,并且添加到res中,进行深搜

在dfs中,首先判断res的长度是否等于给定数组的长度,如果相等的话,把这个链表添加入list,切记,这里添加不要直接添加,需要重新new一个链表 ,再把这个这个新的链表加入list,在 Java 中,对象类型变量在传参的过程中,复制的是变量的地址。这些地址被添加到 res 变量,但实际上指向的是同一块内存地址,所以在结束输出的时候,list中所有的元素都会相等,所以需要这样书写 res.add(new ArrayList<>(res)) ,在每一次回溯时,移除res最末尾的元素

package LeetCode;

import java.time.Period;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class Q46 {
    static List<List<Integer>> list;
    static List<Integer> res;


    public static void main(String[] args) {
        int[] nums = {0,1};
        list = new LinkedList<>();

        for (int i = 0; i < nums.length; i++) {
            res = new LinkedList<>();
            res.add(nums[i]);
            dfs(nums);
        }

        System.out.println(list);
    }

    public static void dfs(int[] nums) {
        if (res.size() == nums.length) {
            list.add(new LinkedList<>(res));
            return;
        }
        for (int i = 0; i < nums.length; i++) {
            if (!res.contains(nums[i])) {
                res.add(nums[i]);
                dfs(nums);
                res.remove(res.size()-1);
            }
        }

    }

}

相关文章:

  • HTML5前端第四章节
  • RG-S3760应用协议配置
  • 动静态库的使用和原理(下)
  • 区块链(Blockchain)
  • GED-VIZ部署解决方案
  • Java学习打卡-Day19-Set、HashSet、LinkedHashSet
  • Deepseek+扣子实现xhs内容自动采集
  • 云原生服务网格:微服务通讯的量子纠缠革命
  • ICLR 2025 机器人智能灵巧操作更进一步DexTrack
  • 线上课程小程序开发制作助力机构高效运营
  • Linux复习——基础IO,认识文件描述符、软硬件链接
  • 13 - linux 内存子系统
  • iQOO手机投屏到Windows有两种方法,其中一种可远程控制
  • Python 的 ​ORM(Object-Relational Mapping)工具浅讲
  • Llinux安装MySQL教程
  • 数组连续和 - 华为OD统一考试(C卷)
  • python中的allure报告使用
  • 【Python3教程】Python3基础篇之函数
  • c语言基础编程入门练习题
  • 【Android】安卓原生应用播放背景音乐与音效(笔记)
  • 商人运作亿元“茅台酒庞氏骗局”,俩客户自认受害人不服“从犯”判决提申诉
  • 微软将在全球裁员6000人,目标之一为减少管理层
  • 西安市未央区委书记刘国荣已任西咸新区党工委书记
  • 法治日报整版聚焦:儿童能否成为短视频主角?该如何监管?
  • 支持企业增强战略敏捷更好发展,上海市领导密集走访外贸外资企业
  • 行知读书会|换一个角度看见社会