全排列——交换的思想

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

示例 1:

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

示例 2:

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

示例 3:

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

思路:最后存在result一定是pai.copy(),因为所有的pai即便是传参也是相当于同一个对象(就是只是地址)。

比较巧妙的在于可以通过交换元素,来控制还未选择的元素都集中在nums数组后半部分。

python 复制代码
class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        result = []
        pai=list()
        def dfs(first:int):
            if first==len(nums):
                result.append(pai.copy())
                return
            for i in range(first,len(nums)):
                pai.append(nums[i])
                nums[first] ,nums[i]= nums[i],nums[first]
                dfs(first+1)
                pai.pop()
                nums[first] ,nums[i]= nums[i],nums[first]

        dfs(0)
        return result
相关推荐
RSTJ_16254 小时前
PYTHON+AI LLM DAY FIFITY-THREE
开发语言·人工智能·python
programhelp_4 小时前
Roblox Coding OA 面经分享|题量不小,但整体更偏工程思维
人工智能·算法·面试
JAVA社区4 小时前
Java进阶全套教程(一)—— 数据框架Mybatis详解
java·开发语言·面试·职场和发展·mybatis
周末也要写八哥4 小时前
机器学习评价指标之平均概念
人工智能·算法·机器学习
晚烛4 小时前
CANN 模型蒸馏实战:大模型知识迁移到小模型
python·线性代数·矩阵
UEBqbZvUB4 小时前
基于 Flask 框架开发的在线学习平台,集成人工智能技术,提供分类练习、随机练习、智能推荐等多种学习模式 HTTPS ECDHE 握手全解析
开发语言·flask·java-consul
俊哥工具4 小时前
解决网速卡顿、断网、网络报错,万能网络修复工具教程
网络·python·django·计算机外设·智能路由器·pygame
WL_Aurora4 小时前
Python爬虫实战(九):百度百聘招聘数据采集
爬虫·python·百度
qq_2518364574 小时前
基于java 安卓-RSS阅读系统毕业论文
android·java·开发语言
lili00124 小时前
Gemini 3.5发布后的AI格局:谷歌重新定义行业标准
java·人工智能·python·ai编程