1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// @Title: 路径交叉 (Self Crossing)
// @Author: 15816537946@163.com
// @Date: 2021-10-29 16:41:11
// @Runtime: 16 ms
// @Memory: 7 MB
func isSelfCrossing(distance []int) bool {
	distance = append([]int{0, 0, 0, 0}, distance...)
	n := len(distance)
	i := 4
	for i < n && distance[i] > distance[i-2] {
		i++
	}
	if n == i {
		return false
	}
	if distance[i] >= distance[i-2]-distance[i-4] {
		distance[i-1] -= distance[i-3]
	}
	i++
	for i < n && distance[i] < distance[i-2] {
		i++
	}
	return i != n

}