var ( size int res []string helper map[string][]string)func findItinerary(tickets [][]string) []string { size = len(tickets) if size == 0 { return nil } res = make([]string, 0, size + 1) helper = map[string][]string{} for _, v := range tickets { helper[v[0]] = append(helper[v[0]], v[1]) } for _, v := range helper { sort.Strings(v) } if backtracking("JFK") { return res } return nil}func backtracking(start string) bool { res = append(res, start) if len(res) == size + 1 { return true } for i, to := range helper[start] { if to == "" { continue } helper[start][i] = "" if backtracking(to) { return true } helper[start][i] = to res = res[:len(res) - 1] } return false}
确定输入数据能有正确返回值
var ( helper map[string][]string res []string)func findItinerary(tickets [][]string) []string { helper = map[string][]string{} for _, v := range tickets { helper[v[0]] = append(helper[v[0]], v[1]) } for _, v := range helper { sort.Strings(v) } res = []string{} backtracking("JFK") return res}func backtracking(start string) { for len(helper[start]) > 0 { to := helper[start][0] helper[start] = helper[start][1:] backtracking(to) } res = append([]string{ start }, res...)}