数组的全排列

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言


一、题目

给出一个数字,请写出他的全排列

输入:nums = 1,2,3

输出:\[1,2,3,1,3,2,2,1,3,2,3,1,3,1,2,3,2,1]

二、学习的算法

时间回溯算法,通过递归和还原构成

java 复制代码
import java.util.*;

public class Permutation {
    public static void main(String[] args) {
        int num = 123;
        String str = String.valueOf(num);
        List<String> result = new ArrayList<>();
        permute(str.toCharArray(), 0, result);
        
        for (String s : result) {
            System.out.println(s);
        }
    }
    
    static void permute(char[] arr, int start, List<String> result) {
        if (start == arr.length) {
            result.add(new String(arr));
            return;
        }
        
        for (int i = start; i < arr.length; i++) {
            swap(arr, start, i);
            permute(arr, start + 1, result);
            swap(arr, start, i);
        }
    }
    
    static void swap(char[] arr, int i, int j) {
        char temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

三.自己的想法

一位位取得每位数字,并写入0-9字典计数。

从最高位开始,从小到大排列,直到完全从大到小排列,就认为完成一次全排列

例如123排成321就认为排序完成


总结

如果一个题十分钟内还没有想法,可能就是做不出来

相关推荐
Java内核笔记3 分钟前
Spring Boot 4 可观测性源码剖析:OpenTelemetry 全链路打通日志、指标、追踪
java·后端
6Hzlia4 分钟前
【Classic 150 刷题计划】 LeetCode 274. H 指数 | C++ 二分答案法 (单调性降维打击)
c++·算法·leetcode
Wang's Blog5 分钟前
Java框架快速入门: Spring Security+OAuth2之跨域处理
java·开发语言·spring
我是大猴子7 分钟前
MyBatis‑Plus & MyBatis‑Flex 区别
java·服务器·数据库
行者全栈架构师10 分钟前
WorkBuddy 实战:50 份简历 30 分钟筛完,还能自动出评估报告
人工智能·算法·微信
huang57914713 分钟前
数据结构的抽象化与接口复用设计理念4
数据结构
动词ing19 分钟前
【学习笔记】数据结构(链表合并 双指针合并有序链表)
数据结构·笔记·学习
Bs_MoneyMagnet20 分钟前
基于springboot+vue的在线音乐管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
YangYang9YangYan21 分钟前
2026 校招管理会计 JD 拆解,数据分析能力要求与工具清单
java·数据库·数据分析
ysu_031429 分钟前
19-插入排序与希尔排序
数据结构·算法·排序算法