(leetcode)力扣100 55全排列

题目

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

数据范围

1 <= nums.length <= 6

-10 <= numsi <= 10

nums 中的所有整数 互不相同

测试用例

示例1

java 复制代码
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例2

java 复制代码
输入:nums = [0,1]
输出:[[0,1],[1,0]]

示例3

java 复制代码
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

题解(时间On*n!,空间On)

java 复制代码
class Solution {
        int len;
    public List<List<Integer>> permute(int[] nums) {
        len=nums.length;

        List<List<Integer>> res= new ArrayList<>();

        List<Integer> curr=new ArrayList<>();

        for(int i=0;i<len;i++){
            curr.add(nums[i]);
        }

        dfs(res,curr,0);

        return res;
    }


    public void dfs(List<List<Integer>> res,List<Integer> curr,int u){
        if(u==len){
            res.add(new ArrayList<Integer>(curr));
        }

        for(int i=u;i<len;i++){
            Collections.swap(curr,u,i);
            dfs(res,curr,u+1);
            Collections.swap(curr,u,i);
        }
    }
}

思路

十分简单的一种遍历方法,所以不涉及到什么思路,但是由于时间复杂度过于高实用性其实不高,代码简单记住就行。

相关推荐
nm_zfyjt1 小时前
信息流广告投放优化实践:线索成本评估模型与转化链路重构(家装建材案例)
算法·重构·内蒙古朋友圈广告服务商·内蒙古朋友圈获客
w_zero_one2 小时前
算法--构造
java·数据结构·算法
其实防守也摸鱼3 小时前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
小超人诞生日记4 小时前
C++ 智能指针的使用及其原理详解
c++·算法
AiNightVision7 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.3338 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
小郎君6589 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
axe_hu9 小时前
AI产品经理的职业规划与学习路径
人工智能·职场和发展·产品经理·学习方法
JJJennie7779 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai