go語言算法庫(go實現LeetCode算法題全排列)
2023-10-10 00:04:41 1
go語言算法庫?給定一個沒有重複數字的序列,返回其所有可能的全排列,接下來我們就來聊聊關於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}
,