leetcode SelfCrossing
z
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class SelfCrossing {
/**
* You are given an array x of n positive numbers. You start at point (0,0) and moves x[0] metres to the north,
* then x[1] metres to the west, x[2] metres to the south, x[3] metres to the east and so on. In other words,
* after each move your direction changes counter-clockwise.
*
* Write a one-pass algorithm with O(1) extra space to determine, if your path crosses itself, or not.
*/
public boolean isSelfCrossing(int[] x) {
int n = x.length;
if (n < 4)
return false;
for (int i=3; i<n; i++){
if (i==4){
if ((x[0] < x[2]) || ((x[0] > x[2]) && (x[1] > x[3])))
return true;
}
}
return false;
}
}