給出乙個不含重複數字的排列,求這些數字的所有排列按字典序排序後該排列的編號。其中,編號從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[i]值的個數,後面乘的就是後面還有多少個數的階乘
說明 :這個算出來的數康拖展開值,是在所有排列次序 - 1的值,因此x+1即為在全排列中的次序
列 :在(1,2,3,4,5)5個數的排列組合中,計算 34152的康托展開值。
帶入上面的公式
x = 2 * 4! + 2 * 3! + 0 * 2! + 1 * 1! + 0 * 0!
=>x = 61
依次為思路進行寫**:
public class solution
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 ...
兩次過 Lintcode 56 兩數之和
給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。你需要實現的函式twosum需要返回這兩個數的下標,並且第乙個下標小於第二個下標。注意這裡下標的範圍是 0 到 n 1。example1 給出 numbers 2,7,11,15 target 9,返回 0,1 example2 ...
兩次過 Lintcode 1209 構造矩形
對於乙個web開發者,如何設計頁面大小很重要。所以,給定乙個矩形大小,設計其長 l 寬 w 使其滿足如下要求 1.矩形區域大小需要和給定目標相等。2.寬度w不大於長度l,也即l w.3.長和寬的差異盡可能的小。返回設計好的長度l和寬度w。樣例 輸入 4 輸出 2,2 解釋 目標區域是4,所有可能的構...