尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

JAVA练习328- 全排列

JAVA练习328- 全排列
📅 发布时间:2026/7/23 18:26:11

题目概览

给定一个不含重复数字的数组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中的所有整数互不相同

来源:46. 全排列 - 力扣(LeetCode)

解题分析

方法:回溯

以 [1,2,3] 为例,它的排列可以看做:
先固定 1,然后固定 2,得到 [1,2,3],然后不固定 2,交换 3 和 2 得到 [1,3,2],
然后不固定 1,交换 1 和 2,
然后固定 2,再固定 1,得到 [ 2,1,3],然后不固定 1,交换 3 和 1 得到 [2,3,1],
然后不固定 2,交换 1 和 3,
然后固定 2,再固定 1,得到 [ 3,2,1],然后不固定 2,交换 2 和 1 得到 [3,1,2]。
令当前索引为 i,那么这过程就可以看做依次 i 和 [ i, n-1 ] 的数做交换,然后递归 i + 1,继续重复直到遍历 i = n,得到结果后,将 i 和 [ i, n-1 ] 的数交换回来,继续遍历,最后得到答案。

时间复杂度:O(n×n!)
空间复杂度:O(n)

class Solution { public List<List<Integer>> permute(int[] nums) { List<Integer> list = new ArrayList<>(); for (int num: nums) { list.add(num); } List<List<Integer>> result = new ArrayList<>(); backTracking(nums.length, result, list, 0); return result; } public void backTracking(int n, List<List<Integer>> result, List<Integer> nums, int index) { if (index == n) { result.add(new ArrayList<>(nums)); return; } for (int i = index; i < n; ++i) { Collections.swap(nums, index, i); backTracking(n, result, nums, index + 1); Collections.swap(nums, index, i); } } }

相关新闻

  • MagicMouseTrails 使用教程:给 Windows 鼠标加动态光轨,桌面美化新手 5 分钟上手(2026)
  • 苏州本地连锁黄金回收品牌排行(口碑好) - 生活时报
  • 小龙虾 AI OpenClaw 怎么装?Windows 本地智能体搭建经验分享(含安装包)

最新新闻

  • 杭州管道疏通哪家靠谱?2026西湖区业主真实测评避坑指南 - 余生黄金回收
  • 【Rust自学】2.3. 猜数游戏Pt.3 输入数与随机数的对比
  • [AG-UI详解-05]如何构建一个兼容AG-UI协议的客户端
  • INT4 通俗完整讲解
  • Hercules微控制器ECC安全机制:从原理到实战的嵌入式数据保护
  • FlexRay通信控制器中断寄存器配置与应用实战指南

日新闻

  • 亨得利盐城维修点在哪里?手表维修保养地址指南**公示(2026年7月最新) - 亨得利官方
  • 提升.NET API安全性:Boxed.AspNetCore.Swagger认证授权最佳实践
  • 帝舵佛山**网点地址更新:2026年7月售后热线电话与服务客户指南 - 帝舵中国官方服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号