46. Permutations
来源:互联网 发布:在淘宝上搜血滴子 编辑:程序博客网 时间:2024/05/29 14:10
1刷
想到不用想肯定比第一次写得更好,31, 46, 47这3题完全搞定全排序!!!
class Solution {public: vector<int> nextPermutation(vector<int>& nums){ int k = -1; for(int i = nums.size() - 2; i >= 0; -- i) if(nums[i] < nums[i + 1]){ k = i; break; } if(k == -1){ reverse(nums.begin(), nums.end()); return nums; } int t = -1; for(int i = nums.size() - 1; i > k; -- i) if(nums[i] > nums[k]){ t = i; break; } swap(nums[k], nums[t]); reverse(nums.begin() + k + 1, nums.end()); return nums; } vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>>ve; int n = nums.size(); int sum = 1; for(int i = 1; i <= n; ++ i) sum = sum * i; ve.push_back(nums); while(--sum) ve.push_back(nextPermutation(nums)); return ve; }};
2刷
为了做47题,重新学习了原来的方法,总觉得47最后一个案例卡next这个方法的时间!!!!
class Solution {public: void getit(vector<int>& nums, int now, int n, vector<vector<int>>& ve){ if(now == n){ ve.push_back(nums); return ; } for(int i = now; i <= n; ++ i){ swap(nums[i], nums[now]); getit(nums, now + 1, n, ve); swap(nums[i], nums[now]); } } vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>>ve; getit(nums, 0, nums.size() - 1, ve); return ve; }};
0 0
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 42. Trapping Rain Water
- 43. Multiply Strings
- 44. Wildcard Matching
- win10并盘问题
- 45. Jump Game II
- 46. Permutations
- 47. Permutations II
- Quartz 2D 以及手势的综合 小demo
- 48. Rotate Image
- SpringBoot开发详解(一)--初识SpringBoot
- 如何在Github Pages搭建自己写的页面?
- 移动开发框架 Weex 简介大会观点
- python中的编码问题
- NimGame292