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

示例:

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

 思路:递归的思路来实现,即固定第一位,对剩下的数字进行同样的算法,直到把一个数组全部遍历完。 用vector<vector<int>>& ans来保存全排列的数组, 用begin来表示需要全排列的起始位置,end来表示需要全排列的终止位置

class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> result;int n = nums.size();core(result,nums,0,n-1);return result;}void core(vector<vector<int>>& result, vector<int>& nums, int start, int end){if(start==end){result.push_back(nums);return;}for(int i=start;i<=end;++i){swap(nums, i, start);core(result, nums, start+1, end);swap(nums, i, start);}}void swap(vector<int>& nums, int a, int b){int temp = nums[a];nums[a] = nums[b];nums[b] = temp;}
};

优化:nums按值传递,省去一次swap

class Solution {
public:void permute(vector<int>nums, vector<vector<int>>& ans, int begin, int end){if(begin > end){ans.push_back(nums);return;}else{for(int i = begin; i <= end; i++){swap(nums[begin], nums[i]);permute(nums, ans, begin+1, end); }}}vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> ans;int len = nums.size()-1;permute(nums, ans, 0, len);return ans;}
};

全排列—leetcode46相关推荐

  1. 【coding】回溯

    1. 八皇后 2. 2n皇后 3. 国际象棋 4. 马跳日 5. 骑士最短路径 6. 矩阵中的路径 7. 机器人的运动范围 8. 全排列 [leetcode-46] 9. 全排列II [leetcod ...

  2. 回溯算法--LeetCode-46 全排列、LeetCode-47 全排列Ⅱ

    LeetCode-46 全排列 题目链接:https://leetcode-cn.com/problems/permutations/ 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输 ...

  3. Leetcode46全排列DFS

    链接 题目大意:给定一个数组,求出所有的全排列. 分析 DFS和回溯的方法. 回溯算法的核心 选择列表:表示当前可做的选择 路径:记录做过的选择 结束条件:遍历到树的底层,在这里是选择列表为空的时候. ...

  4. leetcode46. 全排列(回溯)

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

  5. leetcode46.全排列

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

  6. [Swift]LeetCode46. 全排列 | Permutations

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  7. LeetCode46:全排列(八皇后)

    前言 本系列文章为<leetcode>刷题笔记. 题目位置:力扣中国 项目位置:我的Github项目 题目 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2, ...

  8. LeetCode 47. 全排列 II(回溯+搜索剪枝)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例:输入: [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1] ] ...

  9. 字符串全排列的问题 python和c语言实现

    前言 这是一个的经典的问题 设计一个算法,输出一个字符串字符的全排列. 比如,String = "abc" 输出是"abc","bac",& ...

最新文章

  1. 根据下拉框生成控件列表
  2. sdut 1488 连通分量的个数(并查集)
  3. Linux文件查找工具之find “大宝剑”--转载
  4. 属于c语言高级参数的,c语言可变参数的取值
  5. Asp.Net Core 中IdentityServer4 授权流程及刷新Token
  6. 数据可视化【十一】树状图
  7. MSP430F5529 DriverLib 库函数学习笔记(十六)比较器B Comp_B
  8. java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例
  9. 深入浅出VC++串口编程之基于Win32 API
  10. kmem_cache_alloc核心函数slab_alloc_node的实现详解
  11. 超好用的开源 IP 地址管理系统,告别传统 Excel 统计方式!
  12. 如何自制daplink_DAPLink高速版
  13. 服务器维护封号,LOL客服的关于他们自己服务器问题导致账号被封号的问题
  14. Unity3D游戏开发引擎的产品特点
  15. 如果我们能正确预测基本面因子
  16. 计算机室内设计cad实践报告,cad室内设计实习报告
  17. 如何快速插入大量/批量随机数据到数据库(oracle/sqlserver/mysql/postgresql)
  18. 软件测试进阶之2——沉下心来思考
  19. 嵌入式 linux yum命令详解
  20. 水文章(bushi)

热门文章

  1. html 编辑xml,编辑XML\HTML时取消浏览“amp”
  2. C++函数中那些不可以被声明为虚函数的函数
  3. 【git】强制覆盖本地代码(与git远程仓库保持一致)
  4. NetworkComms V3 之支持TCP连接和UDP连接
  5. Python数据类型知识点
  6. [leetcode]203. Remove Linked List Elements链表中删除节点
  7. python:collections模块
  8. 《OD大数据实战》MongoDB环境搭建
  9. kbengine定义实体
  10. Linux系统管理技术手册——第6章 添加新用户