Lintcode 上乙個排列

2021-07-29 21:18:30 字數 630 閱讀 8004

給定乙個整數陣列來表示排列,找出其上乙個排列。

注意事項

排列中可能包含重複的整數

您在真實的面試中是否遇到過這個題?

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 交換這兩個數的位置,將遞增數列...