https://leetcode.com/problems/self-crossing/?tab=Description
依次按照数组长度,上左下右移动,判断是否会穿过之前路线
可能情况为下列三种,其余均为变形
public class Solution {
public boolean isSelfCrossing(int[] x) {
for (int i = 3; i < x.length; i++) {
if (x[i] >= x[i - 2] && x[i - 1] <= x[i - 3]) {
return true;
} else if (i > 3 && x[i - 1] == x[i - 3] && x[i] + x[i - 4] >= x[i - 2]) {
return true;
} else if (i > 4 && x[i - 4] <= x[i - 2] && x[i] + x[i - 4] >= x[i - 2] && x[i - 1] <= x[i - 3] && x[i - 1] + x[i - 5] >= x[i - 3]) {
return true;
}
}
return false;
}
}
/* i-2
case 1 : i-1┌─┐
└─┼─>i
i-3
i-2
case 2 : i-1 ┌────┐
└─══>┘i-3
i i-4 (i overlapped i-4)
case 3 : i-4
┌──┐
│i<┼─┐
i-3│ i-5│i-1
└────┘
i-2
*/