这种路径交叉需满足以下条件:
第 i-1i−1 次移动距离大于等于第 i-3i−3 次移动距离减第 i-5i−5 次移动距离的差,且小于等于第 i-3i−3 次移动距离;注意此时第 i-3i−3 次移动距离一定大于第 i-5i−5 次移动距离,否则在两步之前就已经出现第 11 类路径交叉的情况了。
第 i-2i−2 次移动距离大于第 i-4i−4 次移动距离;注意此时第 i-2i−2 次移动距离一定不等于第 i-4i−4 次移动距离,否则在上一步就会出现第 33 类路径交叉(或第 22 类路径交叉)的情况了。
第 ii 次移动距离大于等于第 i-2i−2 次移动距离减第 i-4i−4 次移动距离的差。
class Solution {
public boolean isSelfCrossing(int[] distance) {
int n = distance.length;
for (int i = 3; i < n; ++i) {
// 第 1 类路径交叉的情况
if (distance[i] >= distance[i - 2] && distance[i - 1] <= distance[i - 3]) {
return true;
}
// 第 2 类路径交叉的情况
if (i == 4 && (distance[3] == distance[1]
&& distance[4] >= distance[2] - distance[0])) {
return true;
}
// 第 3 类路径交叉的情况
if (i >= 5 && (distance[i - 3] - distance[i - 5] <= distance[i - 1]
&& distance[i - 1] <= distance[i - 3]
&& distance[i] >= distance[i - 2] - distance[i - 4]
&& distance[i - 2] > distance[i - 4])) {
return true;
}
}
return false;
}
}
最后
以上就是陶醉小甜瓜最近收集整理的关于Leetcode打卡1029- 路径交叉的全部内容,更多相关Leetcode打卡1029-内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复