給定乙個整數陣列來表示排列,找出其上乙個排列。
注意事項
排列中可能包含重複的整數
您在真實的面試中是否遇到過這個題?
yes
樣例給出排列[1,3,2,3]
,其上乙個排列是[1,2,3,3]
給出排列[1,2,3,4]
,其上乙個排列是[4,3,2,1]
標籤 排列
思路:逆序找到第乙個不是遞減的數字置為i,從位置i+1開始找最大的且小於nums[i]的數,將其與nums[i],交換位置,然後從位置i+1開始到n-1逆序,即得到上乙個排列。
class solution
void swap(vector&temp,int l,int k)
vectorpreviouspermuation(vector&nums)
i--;
// cout<=max)
else
break;
}swap(nums,i,k);
return epiloge(nums,i,n);}}
};
Lintcode 上乙個排列
給定乙個整數陣列來表示排列,找出其上乙個排列。樣例 給出排列 1,3,2,3 其上乙個排列是 1,2,3,3 給出排列 1,2,3,4 其上乙個排列是 4,3,2,1 解釋 所謂的上乙個排列其實就是把給定數字組合,並從大到小排列,找到與給定排列最接近,且比它小的排列 即其上乙個排列 比如 1,3,2...
51 上乙個排列
2017.9.25 可以理解為下乙個排列的逆思路。下乙個排列,是將乙個公升序序列逐步調整為降序序列的過程。上乙個排列,可以理解為將乙個降序序列逐步調整為公升序序列的過程。這樣,首先就是從後向前遍歷找到 num flag num flag 1 然後再從後向前遍歷,找到比num flag 小的最大值。交...
LintCode 下乙個排列
題目 給定乙個整數陣列來表示排列,找出其之後的乙個排列。樣例 給出排列 1,3,2,3 其下乙個排列是 1,3,3,2 給出排列 4,3,2,1 其下乙個排列是 1,2,3,4 思路 1 從右向左找到第乙個遞增數列 2 找到遞增數列中最小的比遞增數列前乙個數大的數 3 交換這兩個數的位置,將遞增數列...