1. 题目

2. 解答

给定一个序列,序列中的任意一个数字都可以作为全排列的最后一位。然后,其余位置元素的确定便是剩余元素的一个全排列,也就是一个子问题。

例子中 [1, 2, 3] 的全排列,最后一位可以是 1 或者 2 或者 3。如果最后一位是 3,前两位便是 [1, 2] 的全排列。

我们用递归来实现,变量 k 一开始为序列的长度,每次求解子问题的时候减一。递归终止条件为 k=1,一个元素的全排列只有它自己。

class Solution {
public: vector<vector<int>> result; vector<vector<int>> permute(vector<int>& nums) { int n = nums.size();
Generate_Premutations(nums, n, n);
return result; } void Generate_Premutations(vector<int>& nums, int n, int k)
{
if (k == 1)
{
result.push_back(nums);
return;
}
// 任何一个数字都可以作为全排列的最后一位
for (int i = 0; i < k; i++)
{
int temp = nums[i];
nums[i] = nums[k-1];
nums[k-1] = temp;
// 最后一位数字确定后,余下的是一个全排列的子问题
Generate_Premutations(nums, n, k-1); // 恢复原数组
temp = nums[i];
nums[i] = nums[k-1];
nums[k-1] = temp;
}
}
};

获取更多精彩,请关注「seniusen」!

LeetCode 46——全排列的更多相关文章

  1. 每日一题-——LeetCode(46)全排列

    题目描述: 给定一个没有重复数字的序列,返回其所有可能的全排列.输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ...

  2. Java实现 LeetCode 46 全排列

    46. 全排列 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2] ...

  3. [leetcode] 46. 全排列(Java)

    46. 全排列 这题我们可以借用31. 下一个排列写的nextPermutation函数来做,稍微改造一下即可 注意要先给nums排个序 class Solution { // 当没有下一个排列时re ...

  4. leetcode 46. 全排列 及 47. 全排列 II

    46. 全排列 问题描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3 ...

  5. [LeetCode] 46. 全排列(回溯)

    ###题目 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], ...

  6. LeetCode 46 全排列

    题目: 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3 ...

  7. LeetCode 46. 全排列(Permutations)

    题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [ ...

  8. leetcode 46 全排列 (python)

    给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] ...

  9. 力扣Leetcode 46. 全排列

    全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], ...

随机推荐

  1. W3C标准下的盒模型与IE盒模型

    标准盒模型如下图所示: IE下盒模型如下图所示:

  2. Paper Reading_Computer Architecture

    最近(以及预感接下来的一年)会读很多很多的paper......不如开个帖子记录一下读paper心得 Computer Architecture Last level cache (llc) perf ...

  3. react搭建

    https://juejin.im/post/5b4de4496fb9a04fc226a7af

  4. setState总结

    react中的setState特点: 是异步操作函数: 组件在还没有渲染之前, this.setState 还没有被调用: 批量执行 State 转变时让 DOM 渲染更快(相对比一个一个的setSt ...

  5. Linux系统性能测试工具(二)——内存压力测试工具memtester

    本文介绍关于Linux系统(适用于centos/ubuntu等)的内存压力测试工具-memtester.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: ...

  6. Linux学习--第六天--软件包

    yum在线管理 管理的是rpm包,光盘里面都有 /etc/yum.repos.d下面有四个文件,对应网络yum源,光盘yum源等.如果需要用到哪个源,将其他三个源的enabled设置为0即可. |源配 ...

  7. mybatis返回自增主键问题踩坑

    1 <insert id="insert" keyProperty="id" useGeneratedKeys="true"
 par ...

  8. 过采样算法之SMOTE

    SMOTE(Synthetic Minority Oversampling Technique),合成少数类过采样技术.它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加 ...

  9. nodejs第一天

    按下node进入交互模式  ,按两次ctrl  + c  退出  或者输.exit退出

  10. 【NOIP2016提高A组8.12】奇袭

    题目 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上要迎来最终的压力测试--魔界入侵. 唯一一个神一般存在的Administrator被消灭了,靠原本的整合骑士的力量 ...