lintcode198 排列序號II

2021-10-03 02:18:03 字數 511 閱讀 8908

給出乙個可能包含重複數字的排列,求這些數字的所有排列按字典序排序後該排列在其中的編號。編號從1開始。

樣例

樣例 1

:輸入:[1

,4,2

,2]輸出:

3樣例 2

:輸入 :[1

,6,5

,3,1

]輸出:

24

思路:與排列序號1相比,多了重複數字的可能性,所以我們在 lintcode-197-排列序號 的基礎上,使用雜湊表儲存元素出現的次數,對於重複元素 a[i],a[i] 在 [0,i] 區間中有重複元素,則用 a[i] 的 count * fact 的結果除以重複次數 dup 的階乘。

class

solution

res+

=cnt*factor/dup;

factor*

=(len-i);}

return res;}}

;

Lintcode 197 排列序號

math 舉例 1,2,3,4 第一位是1,沒有比1小的,所以 0,第二位是2,後面沒有比2小的,所以0 結果 0 1 1 舉例 4,3,2,1 第一位是4,1,2,3 小於4,所以 3 3 第二位是2,2,1 小於3,2 2!第三位是2,1 小於2,1 1!結果 3 3 2 2!1 1!1 24 ...

197 排列序號

是 這道題採取暴力解法會超時,應當對於原陣列的每乙個位置找到其後有多少個數比它小,然後再相加這些數與對應的權的成績。class solution long long ans 1,fac 1,cc 1 for int i len 2 i 0 i ans fac cc c i return ans 注意...

lintcode 排列序號

想法 1.對於四位數 4213 4 100 2 100 1 10 3 2.4個數的排列有4!種。當我們知道第一位數的時候,還有3!種方式,當知道第二位數時候還有2!種方式,當知道第三位數的時候還有1!種方式,前面三位數都確定的時候,最後一位也確定了。這裡是按照高位到地位的順序 3.對4個數的排列,各...