Problem : https://leetcode.com/problems/self-crossing/
There are only 3 cases can lead self-crossing.
class Solution:
def isSelfCrossing(self, x: List[int]) -> bool:
N = len(x)
for i in range(N):
# 4th line >= 2nd line and 1st line >= 3rd line
if i >= 3 and x[i] >= x[i-2] and x[i-3] >= x[i-1]:
return True
# 2nd line == 4th line and 5th line >= 3rd line - 1st line
if i >= 4 and x[i-1] == x[i-3] and x[i] >= x[i-2] - x[i-4]:
return True
# 4th line >= 2nd line and
# 3rd line >= 5th line and
# 5th line >= 3rd line - 1st line
# and 6th line >= 4th line - 2nd line
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
No comments:
Post a Comment