# Self Crossing LeetCode Solution

Here, We see Self Crossing LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.

# List of all LeetCode Solution

## Problem Statement

You are given an array of integers distance.

You start at the point (0, 0) on an X-Y plane, and you move distance[0] meters to the north, then distance[1] meters to the west, distance[2] meters to the south, distance[3] meters to the east, and so on. In other words, after each move, your direction changes counter-clockwise.

Return true if your path crosses itself or false if it does not.

Example 1:

Input: distance = [2,1,1,2]
Output: true
Explanation: The path crosses itself at the point (0, 1).

Example 2:

Input: distance = [1,2,3,4]
Output: false
Explanation: The path does not cross itself at any point.

Example 3:

Input: distance = [1,1,1,2,1]
Output: true
Explanation: The path crosses itself at the point (0, 0).

## Self Crossing LeetCode Solution C++

class Solution {
public:
bool isSelfCrossing(vector<int>& distance) {
if(distance.size()<4) return false;
distance.insert(distance.begin(),0);
for(int i=3;i<distance.size();i++){
if(distance[i]>=distance[i-2] && distance[i-1]<=distance[i-3]) return true;
if(i>=5){
if(distance[i-1]<=distance[i-3] && distance[i-2]>=distance[i-4]&& distance[i-5]>=distance[i-3]-distance[i-1] && distance[i]>=distance[i-2]-distance[i-4])
return true;
}
}
return false;
}
};Code language: PHP (php)

## Self Crossing LeetCode Solution Java

class Solution {
public boolean isSelfCrossing(int[] distance) {
if (distance.length <= 3) {
return false;
}
int i = 2;
while (i < distance.length && distance[i] > distance[i - 2]) {
i++;
}
if (i >= distance.length) {
return false;
}
if ((i >= 4 && distance[i] >= distance[i - 2] - distance[i - 4]) ||
(i == 3 && distance[i] == distance[i - 2])) {
distance[i - 1] -= distance[i - 3];
}
i++;
while (i < distance.length) {
if (distance[i] >= distance[i - 2]) {
return true;
}
i++;
}
return false;
}
}Code language: PHP (php)

## Self Crossing Solution JavaScript

var isSelfCrossing = function (distance) {
if (distance.length <= 3) return false;
let i = 2;
while (i < distance.length && distance[i] > distance[i - 2]) i++;
if (i >= distance.length) return false;
if ((i >= 4 && distance[i] >= distance[i - 2] - distance[i - 4]) ||
(i === 3 && distance[i] === distance[i - 2])) {
distance[i - 1] -= distance[i - 3];
}
i++;
while (i < distance.length) {
if (distance[i] >= distance[i - 2]) return true;
i++;
}
return false;
};Code language: JavaScript (javascript)

## Self Crossing Solution Python

class Solution(object):
def isSelfCrossing(self, distance):
b = c = d = e = 0
for a in distance:
if d >= b > 0 and (a >= c or a >= c-e >= 0 and f >= d-b):
return True
b, c, d, e, f = a, b, c, d, e
return False
Scroll to Top