兩次過 Lintcode 197 排列序號

2021-09-25 06:14:33 字數 648 閱讀 1143

給出乙個不含重複數字的排列,求這些數字的所有排列按字典序排序後該排列的編號。其中,編號從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,所有可能的構...