全排列—leetcode46
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [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相关推荐
- 【coding】回溯
1. 八皇后 2. 2n皇后 3. 国际象棋 4. 马跳日 5. 骑士最短路径 6. 矩阵中的路径 7. 机器人的运动范围 8. 全排列 [leetcode-46] 9. 全排列II [leetcod ...
- 回溯算法--LeetCode-46 全排列、LeetCode-47 全排列Ⅱ
LeetCode-46 全排列 题目链接:https://leetcode-cn.com/problems/permutations/ 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输 ...
- Leetcode46全排列DFS
链接 题目大意:给定一个数组,求出所有的全排列. 分析 DFS和回溯的方法. 回溯算法的核心 选择列表:表示当前可做的选择 路径:记录做过的选择 结束条件:遍历到树的底层,在这里是选择列表为空的时候. ...
- leetcode46. 全排列(回溯)
给定一个 没有重复 数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2 ...
- leetcode46.全排列
给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1, ...
- [Swift]LeetCode46. 全排列 | Permutations
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- LeetCode46:全排列(八皇后)
前言 本系列文章为<leetcode>刷题笔记. 题目位置:力扣中国 项目位置:我的Github项目 题目 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2, ...
- LeetCode 47. 全排列 II(回溯+搜索剪枝)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例:输入: [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1] ] ...
- 字符串全排列的问题 python和c语言实现
前言 这是一个的经典的问题 设计一个算法,输出一个字符串字符的全排列. 比如,String = "abc" 输出是"abc","bac",& ...
最新文章
- 根据下拉框生成控件列表
- sdut 1488 连通分量的个数(并查集)
- Linux文件查找工具之find “大宝剑”--转载
- 属于c语言高级参数的,c语言可变参数的取值
- Asp.Net Core 中IdentityServer4 授权流程及刷新Token
- 数据可视化【十一】树状图
- MSP430F5529 DriverLib 库函数学习笔记(十六)比较器B Comp_B
- java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例
- 深入浅出VC++串口编程之基于Win32 API
- kmem_cache_alloc核心函数slab_alloc_node的实现详解
- 超好用的开源 IP 地址管理系统,告别传统 Excel 统计方式!
- 如何自制daplink_DAPLink高速版
- 服务器维护封号,LOL客服的关于他们自己服务器问题导致账号被封号的问题
- Unity3D游戏开发引擎的产品特点
- 如果我们能正确预测基本面因子
- 计算机室内设计cad实践报告,cad室内设计实习报告
- 如何快速插入大量/批量随机数据到数据库(oracle/sqlserver/mysql/postgresql)
- 软件测试进阶之2——沉下心来思考
- 嵌入式 linux yum命令详解
- 水文章(bushi)
热门文章
- html 编辑xml,编辑XML\HTML时取消浏览“amp”
- C++函数中那些不可以被声明为虚函数的函数
- 【git】强制覆盖本地代码(与git远程仓库保持一致)
- NetworkComms V3 之支持TCP连接和UDP连接
- Python数据类型知识点
- [leetcode]203. Remove Linked List Elements链表中删除节点
- python:collections模块
- 《OD大数据实战》MongoDB环境搭建
- kbengine定义实体
- Linux系统管理技术手册——第6章 添加新用户