LeetCode 설명편 46. 전체 정리
기사 디렉토리
질문 설명
문제 해결 아이디어
깊이 우선 순회, 현재 배열 순회, 현재 접두사를 사용하여 깊이 우선 순회로 이동하여 모든 조합을 찾은 다음 결과를 추가하고 마지막으로 반환
솔루션 코드
func permute(nums []int) [][]int {
var res = make([][]int, 0)
var dfs func(nums []int, prefix []int)
dfs = func(nums []int, prefix []int) {
if len(nums) == 1 {
res = append(res, append(prefix, nums[0]))
return
}
for i := 0; i < len(nums); i++ {
dfs(append(append([]int(nil), nums[:i]...), nums[i+1:]...),
append(append([]int(nil), prefix...), nums[i]))
}
}
dfs(nums, []int(nil))
return res
}