实例¶
实例1¶
题目:
package main var trips = [][]string{ []string{"重庆", "新疆"}, []string{"广州", "南京"}, []string{"上海", "广州"}, []string{"西藏", "重庆"}, []string{"北京", "上海"}, []string{"南京", "西藏"}, } func main() { //本题时间为30分钟 //trips是小明出差的行程, 请找出小明这次行程,并注释时间复杂度与空间复杂度 //结果 [北京","上海", "广州", "南京", "西藏", "重庆","新疆"] for }
解决1:
package main
import "log"
var trips = [][]string{
[]string{"重庆", "新疆"},
[]string{"广州", "南京"},
[]string{"上海", "广州"},
[]string{"西藏", "重庆"},
[]string{"北京", "上海"},
[]string{"南京", "西藏"},
}
func main() {
//本题时间为30分钟
//trips是小明出差的行程, 请找出小明这次行程,并注释时间复杂度与空间复杂度
//结果 [北京","上海", "广州", "南京", "西藏", "重庆","新疆"]
var result []string
i := 1
for _, trip := range trips {
log.Println("-", trip)
if len(result) == 0 {
result = trip
continue
}
//log.Println(newTrips)
for _, trip := range trips {
//log.Println("$", trip)
if result[0] == trip[1] {
result= append(trip, result[1:]...)
log.Println("=====", result)
break
} else if result[len(result)-1] == trip[0] {
result= append(result, trip[1])
log.Println("====>", result)
break
} else {
log.Println("=====")
}
}
i++
}
log.Println(result)
}
解决2:
package main
import "log"
var trips = [][]string{
[]string{"重庆", "新疆"},
[]string{"广州", "南京"},
[]string{"上海", "广州"},
[]string{"西藏", "重庆"},
[]string{"北京", "上海"},
[]string{"南京", "西藏"},
}
func main() {
newTrips := trips[1:]
result := trips[0]
for len(newTrips) != 0 {
log.Println("^^^", len(newTrips))
for i,trip := range newTrips {
if result[0] == trip[1] {
result= append([]string{trip[0]}, result...)
newTrips = new_trip(newTrips, i)
log.Println("=====", result)
break
} else if result[len(result)-1] == trip[0] {
result= append(result, trip[1])
newTrips = append(newTrips[:i], newTrips[i+1:]...)
log.Println("====>", result)
break
} else {
log.Println("=====")
}
}
}
log.Println(result)
}
func new_trip(newTrips [][]string, i int) [][]string {
if i ==0 {
return newTrips[1:]
} else if i == len(newTrips)-1 {
return newTrips[:i]
} else {
return append(newTrips[:i], newTrips[i+1:]...)
}
}