go語言算法庫?給定一個沒有重複數字的序列,返回其所有可能的全排列,接下來我們就來聊聊關于go語言算法庫?以下内容大家不妨參考一二希望能幫到您!
給定一個沒有重複數字的序列,返回其所有可能的全排列。
示例:
輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
下面是一種可行的 go 實現方法:
我們可以使用回溯的方法來解決這道題目。
首先,我們定義一個變量 used,表示每個數字是否被使用過。
接着,我們枚舉所有的數字,如果沒有被使用過,我們就将它添加到當前的組合中,并将 used 設置為 true。
然後,我們遞歸調用本函數來處理剩餘的數字。
在函數調用結束後,我們需要将當前的數字從組合中移除,并将 used 設置為 false。
下面是 go 代碼的實現:
func permute(nums []int) [][]int {
res := [][]int{}
var dfs func([]int)
dfs = func(cur []int) {
if len(cur) == len(nums) {
tmp := make([]int, len(cur))
copy(tmp, cur)
res = append(res, tmp)
return
}
for i := 0; i < len(nums); i {
if nums[i] == -1 {
continue
}
cur = append(cur, nums[i])
nums[i] = -1
dfs(cur)
cur = cur[:len(cur)-1]
nums[i] = cur[len(cur)-1]
}
}
dfs([]int{})
return res
}
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!