数组的全排列

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

文章目录


前言


一、题目

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

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


总结

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

相关推荐
好家伙VCC4 分钟前
Qdrant + LangChain 实战:构建毫秒级语义检索服务
java·langchain
AI人工智能+电脑小能手7 分钟前
【大白话说Java面试题 第93题】【Mysql篇】第23题:从查找速度来看,聚集索引和非聚集索引哪个更快?
java·开发语言·数据库·mysql·面试
摇滚侠15 分钟前
JDBC 基础到高级一套通关!高级篇 28-40
java
Love_云宝儿33 分钟前
WKT数据示例并与GeoJSON数据对比
数据结构·gis
BlockWay1 小时前
WEEX Labs 周度观察:微软-OpenAI 合作调整与AI 多云趋势
大数据·人工智能·算法·安全·microsoft
风筝在晴天搁浅1 小时前
快手 CodeTop LeetCode 224.基本计算器
数据结构·算法·leetcode
Smoothcloud润云1 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text
计算机安禾1 小时前
【算法分析与设计】第41篇:确定性与非确定性多项式时间:P与NP的形式化
算法
我是唐青枫1 小时前
Java MyBatis-Flex 实战指南:从 BaseMapper 到 QueryWrapper 的轻量 ORM 用法
java·开发语言·mybatis
顺风尿一寸1 小时前
Java Native 方法底层原理深度解析:从 JNI 注册到 Native Wrapper 生成
java