Permutations
来源:互联网 发布:windows平板哪个好 编辑:程序博客网 时间:2024/06/07 16:18
题目描述:
Given a collection of distinct numbers, return all possible permutations.
For example,[1,2,3]
have the following permutations:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路:
把一个数组看成由两部分组成:第一部分为它的第一个元素,第二部分是后面的所有元素。
求整个数组的排列,可以看成两步:首先求所有可能出现在第一个位置的元素,
即把第一个字符和后面所有的元素交换。然后固定第一个元素,求后面所有元素的排列。
这个时候仍把后面的所有元素分成两部分:后面元素的第一个元素,以及这个元素之后的所有元素,
然后把第一个元素逐一和它后面的元素交换....
AC代码如下:
class Solution {public:vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> ans;if (nums.size() == 0) return ans;int n = nums.size();int cur_idx = 0;help(nums, cur_idx, ans);return ans;}void help(vector<int>& nums, int cur_idx, vector<vector<int>>& ans){if (cur_idx == nums.size() - 1){ans.push_back(nums);return;}for (int i = cur_idx; i < nums.size(); ++i){swap(nums[cur_idx], nums[i]);help(nums, cur_idx + 1, ans);swap(nums[cur_idx], nums[i]);}}};
0 0
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- How to show or hide filename extensions on Mac
- 详解coredump
- webpack tpl 模板编译的桥梁 tpl-lite-loader
- 基于Selenium一键写CSDN博客
- 闪屏页
- Permutations
- 使用Ophcrack破解系统Hash密码
- GDB十分钟教程(转载自Liigo老师)
- sharePreference封装
- jQuery,DOM相关
- 面试题25:二叉树中和为某一值的路径
- 区间相交问题
- 软件测试计划和测试方案的区别(领域软件测试网)
- 递归为什么那么慢?递归的改进算法