题目链接
思路:归纳交叉的情况
分三种情况:
- i与i-3相交
- i与i-4相交
- i与i-5相交
图示:?
![](https://img-blog.csdnimg.cn/310f451aa1be49519be5204eb5174e29.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU0pDPz8_,size_20,color_FFFFFF,t_70,g_se,x_16)
代码:?
class Solution {
public boolean isSelfCrossing(int[] distance) {
int n = distance.length;
if(n<4) return false;
for(int i=3;i<n;i++){
if((distance[i]>=distance[i-2])
&&(distance[i-1]<=distance[i-3])) return true;
if(i>=4&&(distance[i-1]==distance[i-3])
&&((distance[i]+distance[i-4])>=distance[i-2])) return true;
if(i>=5&&(distance[i-1]>=(distance[i-3]-distance[i-5]))
&&(distance[i-2]>distance[i-4])
&&(distance[i]>=(distance[i-2]-distance[i-4]))
&&distance[i-1]<distance[i-3]) return true;
}
return false;
}
}
|