赞
踩
思路:从后往前找到第一个nums[i-1]>nums[i] 然后从后往前(len-1 -->i(包含))找到第一个大于nums[i-1]的数,与nums[i-1]交换,然后对下标区间为[i,len-1]的元素进行排序。
- class Solution {
- public:
- void nextPermutation(vector<int>& nums) {
- int len=nums.size();
- int i=0;
- for( i=len-1;i>0;i--){
- if(nums[i]>nums[i-1]){
- break;
- }
- }
- if(i==0){
- sort(nums.begin(),nums.end());
- }
- else{
- for(int j=len-1;j>=i;j--)
- {
- if(nums[j]>nums[i-1]){
- swap(nums[j],nums[i-1]);
- break;
- }
- }
- sort(nums.begin()+i,nums.end());
- }
-
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。