数组的全排列

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

文章目录


前言


一、题目

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

输入: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就认为排序完成


总结

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

相关推荐
Han.miracle4 分钟前
Redis 全套笔记:基础 API + 三大架构 + 缓存三大问题
java·windows·redis
zzb15806 分钟前
Fragment 生命周期深度图解:从 onAttach 到 onDetach 完整流程(面试必备)
android·java·面试·安卓
帅小伙―苏7 分钟前
力扣42接雨水
前端·算法·leetcode
AI科技星23 分钟前
精细结构常数α的几何本源:从第一性原理的求导证明、量纲分析与全域验证
算法·机器学习·数学建模·数据挖掘·量子计算
银色火焰战车26 分钟前
浅析golang中的垃圾回收机制(GC)
java·jvm·golang
zhangjw3428 分钟前
第4篇:Java数组与字符串:从基础用法到面试高频考点
java·java基础知识
6Hzlia29 分钟前
【Hot 100 刷题计划】 LeetCode 287. 寻找重复数 | C++ 数组判环 (快慢指针终极解法)
c++·算法·leetcode
MegaDataFlowers29 分钟前
26.删除有序数组中的重复项
算法
俺爱吃萝卜36 分钟前
Spring Boot 3 + JDK 17:新一代微服务架构最佳实践
java·spring boot·架构
曹牧41 分钟前
Spring :component-scan
java·后端·spring