go語言刷題 60 排列序列

2021-10-21 20:20:07 字數 1346 閱讀 9180

申明:本文只用做自己的學習記錄

給出集合 [1,2,3,…,n],其所有元素共有 n! 種排列。

按大小順序列出所有排列情況,並一一標記,當 n = 3 時, 所有排列如下:

「123」

「132」

「213」

「231」

「312」

「321」

給定 n 和 k,返回第 k 個排列。

示例 1:

輸入:n = 3, k = 3

輸出:「213」

示例 2:

輸入:n = 4, k = 9

輸出:「2314」

示例 3:

輸入:n = 3, k = 1

輸出:「123」

//分析:這是典型的回溯演算法,回溯演算法總共分為以下幾步:

//1.建立迴圈結束條件

//2.遍歷操作

//3.根據題目條件減枝,減少不必要的迴圈

//4.正文操作,回溯函式

//6.復位,也就是回溯,將變數恢復到正文操作前的狀態

func

getpermutation

(n int

, k int

)string

func

backtrack

(n int

, k int

, isvisited [

]bool

, count *

int, current int

, result *

int)

}//2.開始遍歷

for i :=

1; i <= n; i++

//4.正文操作

//進行數字拼湊,整合數字

current = current*

10+ i

//記錄該數字的使用情況,true為使用過

isvisited[i-1]

=true

//5.進行下一階段的搜尋,回溯函式

backtrack

(n, k, isvisited, count, current, result)

//6.回溯到上乙個位置的狀態

//當前數字刪除最後一位數

current = current /

10//重置當前數字的使用情況,false表示沒有使用

isvisited[i-1]

=false}}

//判斷數字的長度,排除n=0的可能

func

lengthof

(current int

)(result int

)return temp

}

leetcode刷題之441 排列硬幣

示例 1 n 5 硬幣可排列成以下幾行 因為第三行不完整,所以返回2.示例 2 n 8 硬幣可排列成以下幾行 因為第四行不完整,所以返回3class solution object defarrangecoins self,n type n int rtype int i 1while n 0 if...

刷題60 排序陣列

給定乙個整數陣列 nums,將該陣列公升序排列。示例 1 輸入 5,2,3,1 輸出 1,2,3,5 示例 2 輸入 5,1,1,2,0,0 輸出 0,0,1,1,2,5 1 a.length 10000 50000 a i 50000 演算法穩定性 時間複雜度 空間複雜度 執行用時 記憶體消耗 自...

每日一題力扣357 排列組合

給定乙個非負整數 n,計算各位數字都不同的數字 x 的個數,其中 0 x 10n class solution def countnumberswithuniquedigits self,n int int if n 0 當n 0時只有0 return 1n min n,10 限制10位數以下 re...