lintcode 排列序號

2021-09-10 23:59:51 字數 459 閱讀 3737

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

例如,排列 [1,2,4] 是第 1 個排列。

排列一共有n!種,最高位定下來之後一共是n個(n-1)!種排列,根據這種性質,可以通過查詢低位比高位小的個數來計算當前位置.

比如,1247的排列個數是4!個.尋找2174的位置.

首選從最高位的2開始,後面比他小的只有1個,所以他前面肯定有1開頭排列的3!=6個.

然後比較1,沒有.

然後比較7,只有1個,此時只剩下兩位數,所以74之前只有1個47.

這樣得到的最後結果應該是1+6+1=8.

class solution 

res += temp * t;

--n;

temp /= n;

}return res;

}};

lintcode 排列序號

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

排列序號 LintCode

給出乙個不含重複數字的排列,求這些數字的所有排列按字典序排序後該排列的編號。其中,編號從1開始。樣例 例如,排列 1,2,4 是第 1 個排列。思想 直接計算。例如 2,3,4,1 首先,另存到乙個陣列中,排序,再利用map,獲得數字與位置的關係 遍歷陣列a,在本例中,對於2,前面存在以1,開頭的所...

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