Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit eeba178

Browse files
Merge pull request youngyangyang04#1171 from liumingzhuo/master
Update 0332.重新安排行程.md Go版本
2 parents a842d1f + 8ad1237 commit eeba178

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

‎problems/0332.重新安排行程.md‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,64 @@ class Solution:
342342
return path
343343
```
344344

345+
### Go
346+
```go
347+
type pair struct {
348+
target string
349+
visited bool
350+
}
351+
type pairs []*pair
352+
353+
func (p pairs) Len() int {
354+
return len(p)
355+
}
356+
func (p pairs) Swap(i, j int) {
357+
p[i], p[j] = p[j], p[i]
358+
}
359+
func (p pairs) Less(i, j int) bool {
360+
return p[i].target < p[j].target
361+
}
362+
363+
func findItinerary(tickets [][]string) []string {
364+
result := []string{}
365+
// map[出发机场] pair{目的地,是否被访问过}
366+
targets := make(map[string]pairs)
367+
for _, ticket := range tickets {
368+
if targets[ticket[0]] == nil {
369+
targets[ticket[0]] = make(pairs, 0)
370+
}
371+
targets[ticket[0]] = append(targets[ticket[0]], &pair{target: ticket[1], visited: false})
372+
}
373+
for k, _ := range targets {
374+
sort.Sort(targets[k])
375+
}
376+
result = append(result, "JFK")
377+
var backtracking func() bool
378+
backtracking = func() bool {
379+
if len(tickets)+1 == len(result) {
380+
return true
381+
}
382+
// 取出起飞航班对应的目的地
383+
for _, pair := range targets[result[len(result)-1]] {
384+
if pair.visited == false {
385+
result = append(result, pair.target)
386+
pair.visited = true
387+
if backtracking() {
388+
return true
389+
}
390+
result = result[:len(result)-1]
391+
pair.visited = false
392+
}
393+
}
394+
return false
395+
}
396+
397+
backtracking()
398+
399+
return result
400+
}
401+
```
402+
345403
### C语言
346404

347405
```C

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /