对于这道题来说只有三种情况会相交:
- 第四条边和第一条边相交
- 条件是第一条边大于等于第三条边,第四条边大于等于第二条边
- 适用于第五条边和第二条边相交,第六条边和第三条边相交等等
- 第五条边和第一条边重合相交
- 条件是第二条边和第四条边相等,第五条边大于等于第三条边和第一条边的差值
- 适用于第六条边和第二条边重合相交的情况等等
- 第六条边和第一条边相交
- 条件是第四条边大于等于第二条边,第三条边大于等于第五条边,第五条边大于等于第三条边和第一条边的差值,第六条边大于等于第四条边和第二条边的差值
- 适用于第七条边和第二条边相交的情况等等
画个图就明白了
class Solution:
def isSelfCrossing(self, x: List[int]) -> bool:
for i in range(3, len(x)):
if x[i] >= x[i - 2] and x[i - 3] >= x[i - 1]:
return True
if i >= 4 and x[i-1] == x[i-3] and x[i] >= x[i-2] - x[i-4]:
return True
if i >= 5 and x[i-2] >= x[i-4] and x[i-3] >= x[i-1] and x[i-1] >= x[i-3] - x[i-5] and x[i] >= x[i-2] - x[i-4]:
return True
return False