335パスクロス
X所与nは正の数を含むアレイ。点(0,0)から、最初の移動北方X [0] M、その後西X [1] M、南X [2] M、移動東X [3] M、連続的な動きを動かしました。言い換えれば、各移動後に反時計回りの位置が変更されます。
スペースのO(1)トリップスキャンアルゴリズムの複雑さを書き込み、交差を通して、あなたのパスを決定します。
例1:
┌───┐
│ │
└───┼──>
│
入力:[2,1,1,2]
出力:真の
例2:
┌──────┐
│ │
│
│
└────────────>
入力:[1,2,3,4]
出力:偽
例3:
┌───┐
│ │
└───┼>
入力:[1,1,1,1]
出力:真
class Solution {
public boolean isSelfCrossing(int[] x) {
for (int i = 3; i < x.length; ++i) {
if (x[i] >= x[i - 2] && x[i - 3] >= x[i - 1]) {
return true;
}
if (i >= 4 && x[i-1] == x[i-3] && x[i] >= x[i-2] - x[i-4]) {
return true;
}
if (i >= 5 && x[i-2] >= x[i-4] && x[i-3] >= x[i-1] && x[i-1] >= x[i-3] - x[i-5] && x[i] >= x[i-2] - x[i-4]) {
return true;
}
}
return false;
}
}