Leetcode46. 全排列 题目:

给定一个 没有重复 数字的序列,返回其所有可能的全排列。

示例:

输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]

思路(回溯):

  1. 我们定义递归函数 output(first, output) 表示从左往右填到第first个位置,当前排列为 out。 那么整个递归函数分为两个情况:
  2. first==n时,说明我们已经填完了 n 个位置,找到了一个可行的解,我们将out 放入答案数组中,递归结束。
  3. 如果 first<n,需要考虑第 first 个位置要填哪个数。在填第 first 个数的时候我们遍历题目给定的 n 个数,如果这个数没有被标记过,尝试填入并将其标记,继续尝试填下一个位置,即调用函数 output(first + 1, output)。回溯的时候要撤销这一个位置填的数以及标记,并继续尝试其他没被标记过的数。
  4. 直至回溯结束。

Java AC代码:

import java.util.*;public class Leetcode46 {static List<List<Integer>> permute(int[] nums) {List<List<Integer>> res = new LinkedList<>();ArrayList<Integer> out = new ArrayList<>();for (int num : nums) {out.add(num);}output(nums.length, 0, out, res);return res;}static void output(int n, int first, ArrayList<Integer> out, List<List<Integer>> res) {if (first == n) {res.add(new ArrayList<>(out));}for (int i = first; i < n; i++) {//交换Collections.swap(out, first, i);output(n, first + 1, out, res);//还原Collections.swap(out, first, i);}}public static void main(String[] args) {List<List<Integer>> lists = permute(new int[]{1, 2, 3});for (List<Integer> list : lists) {System.out.println(list);}}
}

2020.4.25打卡

Rayman的绝顶之路——Leetcode每日一题打卡11相关推荐

  1. LeetCode每日一题打卡组队监督!刷题群!

    近 2000 人已经加入共同刷题啦! 群友每天都会在群里给大家讲解算法题 每周日「负雪明烛」组织直播讲题 我相信来看我博客的大部分人都是通过LeetCode刷题过来的.最近发现LeetCode中文网站 ...

  2. 关于LeetCode每日一题打卡失败的感悟

    背景 今年5月,报名参加了三叶姐的"五月打卡活动",押金29.9元,要求每天在力扣上每日一题打卡,完成则押金全退,完不成则押金不退. 事件 2022.5.10,LeetCode上的 ...

  3. Leetcode每日一题(914. 卡牌分组)

    914. 卡牌分组 题目: 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌. 组内所有的牌上都写着相同的整数 ...

  4. LeetCode 每日一题打卡:334.递增的三元子序列

    题目 334.递增的三元子序列 题目大意 给你一个整数数组numsnumsnums ,判断这个数组中是否存在长度为333的递增子序列. 如果存在这样的三元组下标(i,j,k)(i, j, k)(i,j ...

  5. 【Leetcode 每日一题】514. 自由之路(BFS+优先队列)

    Leetcode 每日一题 题目链接:514. 自由之路 难度: 困难 解题思路: 这道题乍一看,可以选择用动态规划或者BFS来求解.本文使用BFS来进行解答.注意到题中有一个最小的到路径.所以我们可 ...

  6. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  7. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  8. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  9. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  10. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

最新文章

  1. tomcat升级_「shell脚本」懒人运维之自动升级tomcat应用(war包)
  2. Quartus16.1布线优化选择,重编译可能会满足时序
  3. java.sql.sqlexception: 无效的名称模式:_PSQLException:错误:关系&ldquo; TABLE_NAME&rdquo;不存在...
  4. 苹果公司有“内鬼”!ID被盗后每条只卖10元钱
  5. git 本地重新关联新的远程仓库命令/查看本地关联远程仓库
  6. python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法
  7. 计算机网络怎么寻址_计算机网络中的无类寻址
  8. 谷歌如何在设计上脱胎换骨
  9. OpenCV-图像处理(24、直方图计算)
  10. Linux:CentOS中SFTP工具的使用
  11. javascript 使用zlib发送wss请求,接收blob,并解压
  12. Exploring Architectural Ingredients of Adversarially Robust Deep Neural Networks
  13. x264源码分析与应用示例(二)——码率控制
  14. 多线段几何图形—— 简单几何图形(从线段中搜索封闭图形)
  15. linux7.6安装gcc,Centos7.6 安装gcc9
  16. 湖南省中职计算机应用教资笔试+面试心得
  17. 苹果显示itunes store无法连接服务器,ipad无法连接itunes store的图文解决办法
  18. Aop切面编程原理和Spring实现
  19. 以太坊 geth 命令相关
  20. ffmpeg h264文件转mp4

热门文章

  1. android 点赞截图,朋友圈点赞p图软件
  2. 一个合格的全栈工程师应该具备哪些技能?
  3. 大数据应用的发展趋势
  4. C语言循环语句的用法——while循环
  5. 光纤通道与以太网交换机之间有什么区别呢?
  6. Android SystemServer 进程
  7. Heaps | 优先队列
  8. java程序员平均工资多少,详细说明
  9. 抖音数据统计_抖音账号数据分析
  10. 什么是html阅读,HTML 介绍