题意:给出一个数组x,开始于坐标原点,向北移动x[0]距离,再向西移动x[1],南移动x[2],东移动x[3],依此类推。
思路:1、四条线组成的相交满足x[i] >= x[i - 2]并且x[[i - 1] <= x[i - 3]
2、五条线组成的相交满足x[i - 1] == x[i - 3] 并且x[i] >= x[i - 2] - x[ i - 4]
3、六条线组成的相交满足x[i] >= x[i - 2] - x[i - 4] && x[i - 2] >= x[i -4]并且x[i - 1] >= x[i - 3] - x[i - 5] && x[i - 3] >= x[i-1]
代码如下:
public class Solution
{
public boolean isSelfCrossing(int[] x)
{
for (int i = 0; i < x.length; i++)
{
if (i >= 3)
{
if (x[i] >= x[i - 2] && x[i - 1] <= x[i - 3]) return true;
}
if (i >= 4)
{
if (x[i - 1] == x[i - 3] && x[i] >= x[i - 2] - x[i - 4]) return true;
}
if (i >= 5)
{
if (x[i - 2] >= x[i - 4] && x[i] >= x[i - 2] - x[i - 4] && x[i - 3] >= x[i - 1] && x[i - 1] >= x[i - 3] - x[i - 5]) return true;
}
}
return false;
}
}