leetcode Next Permutation
2015-02-12 15:09
260 查看
题目:next permutation
题意:找到一个数组的下一种排列,eg: 12345->12354 54321->12345 1324->1342
思路:找了半天规律还错了。。。看了别人的结题报告,感觉碉堡了
1.从后向前找到第一个升序排列的地方,比如12345的4处,1324的2处,设为第i个位置,如果找到头都没找到,那么就整个全倒置相当于54321->12345的情况
2.从第i个位置的后一个开始向后找,直到找到第一个比i大的数,与位置i的数互换位置
题意:找到一个数组的下一种排列,eg: 12345->12354 54321->12345 1324->1342
思路:找了半天规律还错了。。。看了别人的结题报告,感觉碉堡了
1.从后向前找到第一个升序排列的地方,比如12345的4处,1324的2处,设为第i个位置,如果找到头都没找到,那么就整个全倒置相当于54321->12345的情况
2.从第i个位置的后一个开始向后找,直到找到第一个比i大的数,与位置i的数互换位置
class Solution { public: void nextPermutation(vector<int> &num) { if(num.empty()) return; int i; for(i = num.size()-2;i>=0;i--){ if(num[i]<num[i+1]) break; } reverse(num.begin()+i+1, num.end()); if(i==-1) return; //当i=-1时,证明全都倒置了,相当于54321->12345 vector<int>::iterator itr = upper_bound(num.begin()+i+1,num.end(),num[i]); swap(*itr,num[i]); } };
相关文章推荐
- 【C++】【LeetCode】31. Next Permutation && 46. Permutations
- [LeetCode] next_permutation
- leetcode Next Permutation
- 数组之Next Permutation---leetcode
- leetcode Next Permutation
- 【leetcode】 Permutations 一个简单next_permutation的实现
- Leetcode Next Permutation
- [leetcode]Next Permutation @ Python
- LeetCode Next Permutation
- LeetCode Next Permutation
- Leetcode-Permutation(next_permutation或者深搜)
- LeetCode Next Permutation
- leetcode — next-permutation
- LeetCode Next Permutation(字典序排列)
- [LeetCode]Next Permutation java leetcode
- LeetCode 31.Next Permutation & 33.Search in Rotated Sorted Array
- Leetcode_next-permutation(c++ and python version)
- LeetCode Next Permutation
- Next Permutation -- LeetCode(下一个字典序)
- leetcode:Next Permutation + Lon…