197 排列序號

2021-08-20 10:20:44 字數 322 閱讀 9771

這道題採取暴力解法會超時,應當對於原陣列的每乙個位置找到其後有多少個數比它小,然後再相加這些數與對應的權的成績。

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;

}};

注意:其中一些迭代器的用法:

lower_bound:詳見

insert:詳見 

leetcode197 排列序號

題目描述 給出乙個不含重複數字的排列,求這些數字的所有排列按字典序排序後該排列的編號。其中,編號從1開始。例如,排列 1,2,4 是第 1 個排列。class solution else return count 運用stl標準庫中的next permutation 方法最方便,但是複雜度過高,不通...

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 ...

兩次過 Lintcode 197 排列序號

給出乙個不含重複數字的排列,求這些數字的所有排列按字典序排序後該排列的編號。其中,編號從1開始。樣例 1 輸入 1,2,4 輸出 1樣例 2 輸入 3,2,1 輸出 6需要知道乙個演算法 康托展開。原理介紹 x a 0 n 1 a 1 n 2 a n 1 0 a i 指的是位於位置i後面的數小於a ...