当前位置: 首页 > news >正文

LeeCode题库第四十六题

46.全排列

项目场景:

给定一个不含重复数字的数组 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]]

提示:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • nums 中的所有整数 互不相同


问题描述

         这题是全排列的第一题,我们利用回溯的算法来解决这个问题。first表示此时需要固定的位置,如果first等于n说明所有的位置都已经固定了,将此时的排列加入到res即可。之后遍历first到n-1的所有位置,对于每个位置i交换i和first的位置;并继续递归下一个位置,递归返回后,撤销替换操作,尝试其他可能的排列。

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def backtrack(first=0):
            if first==n:
                res.append(nums[:])
            for i in range(first,n):
                nums[first],nums[i]=nums[i],nums[first]
                backtrack(first+1)
                nums[first],nums[i]=nums[i],nums[first]
        n=len(nums)
        res=[]
        backtrack()
        return res


        

        本题提交情况。

        以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光!  

相关文章:

  • 长上下文 GRPO
  • Core Speech Kit(基础语音服务)
  • Django与视图
  • 大整数加法(信息学奥赛一本通-1168)
  • 锂电池组的串数设计研究
  • QOJ9700 Ying’s Cup(拉格朗日插值优化卷积,背包,二项式反演)
  • c++ 嵌入汇编的方式实现int型自增
  • Javascript ajax
  • Compose笔记(八)--权限
  • 《Operating System Concepts》阅读笔记:p208-p227
  • 更新vscode ,将c++11更新到c++20
  • springboot旅游管理系统设计与实现(代码+数据库+LW)
  • openharmory-鸿蒙生态设备之间文件互传发现、接入认证和文件传输
  • 通义千问本地配置并实现微调
  • 手写Tomcat:实现基本功能
  • FastAPI Cookie 和 Header 参数完全指南:从基础到高级实战 [特殊字符]
  • MyBatis-Plus 注解大全
  • Java字符串拼接的底层原理与性能优化
  • C++类和对象入门(三)
  • uniapp uniCloud引发的血案(switchTab: Missing required args: “url“)!!!!!!!!!!
  • 深圳整合营销/北京seo培训机构
  • 福田做网站价格/百度搜索风云榜官网
  • 织梦手机网站怎么仿制/2021小学生新闻摘抄
  • 哪些网站做的比较好看/苏州新闻今天最新消息新闻事件
  • h5商城网站建设是什么/如何自己制作网站
  • 动漫网站怎么做的/网络平台推广运营有哪些平台