Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 648bfde

Browse files
committed
feat: add solutions to lc problem: No.0335.Self Crossing
1 parent 20a8d76 commit 648bfde

File tree

6 files changed

+224
-2
lines changed

6 files changed

+224
-2
lines changed

‎solution/0300-0399/0335.Self Crossing/README.md‎

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,105 @@
5050

5151
<!-- 这里可写通用的实现逻辑 -->
5252

53+
```bash
54+
i-2
55+
case 1 : i-1┌─┐
56+
└─┼─>i
57+
i-3
58+
59+
i-2
60+
case 2 : i-1 ┌────┐
61+
└─══>┘i-3
62+
i i-4
63+
64+
case 3 : i-4
65+
┌──┐
66+
│i<┼─┐
67+
i-3│ i-5│i-1
68+
└────┘
69+
i-2
70+
```
71+
5372
<!-- tabs:start -->
5473
5574
### **Python3**
5675
5776
<!-- 这里可写当前语言的特殊实现逻辑 -->
5877
5978
```python
60-
79+
class Solution:
80+
def isSelfCrossing(self, distance: List[int]) -> bool:
81+
d = distance
82+
for i in range(3, len(d)):
83+
if d[i] >= d[i - 2] and d[i - 1] <= d[i - 3]:
84+
return True
85+
if i >= 4 and d[i - 1] == d[i - 3] and d[i] + d[i - 4] >= d[i - 2]:
86+
return True
87+
if i >= 5 and d[i - 2] >= d[i - 4] and d[i - 1] <= d[i - 3] and d[i] >= d[i - 2] - d[i - 4] and d[i - 1] + d[i - 5] >= d[i - 3]:
88+
return True
89+
return False
6190
```
6291
6392
### **Java**
6493
6594
<!-- 这里可写当前语言的特殊实现逻辑 -->
6695
6796
```java
97+
class Solution {
98+
public boolean isSelfCrossing(int[] distance) {
99+
int[] d = distance;
100+
for (int i = 3; i < d.length; ++i) {
101+
if (d[i] >= d[i - 2] && d[i - 1] <= d[i - 3]) {
102+
return true;
103+
}
104+
if (i >= 4 && d[i - 1] == d[i - 3] && d[i] + d[i - 4] >= d[i - 2]) {
105+
return true;
106+
}
107+
if (i >= 5 && d[i - 2] >= d[i - 4] && d[i - 1] <= d[i - 3] && d[i] >= d[i - 2] - d[i - 4] && d[i - 1] + d[i - 5] >= d[i - 3]) {
108+
return true;
109+
}
110+
}
111+
return false;
112+
}
113+
}
114+
```
115+
116+
### **C++**
117+
118+
```cpp
119+
class Solution {
120+
public:
121+
bool isSelfCrossing(vector<int>& distance) {
122+
vector<int> d = distance;
123+
for (int i = 3; i < d.size(); ++i)
124+
{
125+
if (d[i] >= d[i - 2] && d[i - 1] <= d[i - 3]) return true;
126+
if (i >= 4 && d[i - 1] == d[i - 3] && d[i] + d[i - 4] >= d[i - 2]) return true;
127+
if (i >= 5 && d[i - 2] >= d[i - 4] && d[i - 1] <= d[i - 3] && d[i] >= d[i - 2] - d[i - 4] && d[i - 1] + d[i - 5] >= d[i - 3]) return true;
128+
}
129+
return false;
130+
}
131+
};
132+
```
68133
134+
### **Go**
135+
136+
```go
137+
func isSelfCrossing(distance []int) bool {
138+
d := distance
139+
for i := 3; i < len(d); i++ {
140+
if d[i] >= d[i-2] && d[i-1] <= d[i-3] {
141+
return true
142+
}
143+
if i >= 4 && d[i-1] == d[i-3] && d[i]+d[i-4] >= d[i-2] {
144+
return true
145+
}
146+
if i >= 5 && d[i-2] >= d[i-4] && d[i-1] <= d[i-3] && d[i] >= d[i-2]-d[i-4] && d[i-1]+d[i-5] >= d[i-3] {
147+
return true
148+
}
149+
}
150+
return false
151+
}
69152
```
70153
71154
### **...**

‎solution/0300-0399/0335.Self Crossing/README_EN.md‎

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,101 @@
4646

4747
## Solutions
4848

49+
```bash
50+
i-2
51+
case 1 : i-1┌─┐
52+
└─┼─>i
53+
i-3
54+
55+
i-2
56+
case 2 : i-1 ┌────┐
57+
└─══>┘i-3
58+
i i-4
59+
60+
case 3 : i-4
61+
┌──┐
62+
│i<┼─┐
63+
i-3│ i-5│i-1
64+
└────┘
65+
i-2
66+
```
67+
4968
<!-- tabs:start -->
5069
5170
### **Python3**
5271
5372
```python
54-
73+
class Solution:
74+
def isSelfCrossing(self, distance: List[int]) -> bool:
75+
d = distance
76+
for i in range(3, len(d)):
77+
if d[i] >= d[i - 2] and d[i - 1] <= d[i - 3]:
78+
return True
79+
if i >= 4 and d[i - 1] == d[i - 3] and d[i] + d[i - 4] >= d[i - 2]:
80+
return True
81+
if i >= 5 and d[i - 2] >= d[i - 4] and d[i - 1] <= d[i - 3] and d[i] >= d[i - 2] - d[i - 4] and d[i - 1] + d[i - 5] >= d[i - 3]:
82+
return True
83+
return False
5584
```
5685
5786
### **Java**
5887
5988
```java
89+
class Solution {
90+
public boolean isSelfCrossing(int[] distance) {
91+
int[] d = distance;
92+
for (int i = 3; i < d.length; ++i) {
93+
if (d[i] >= d[i - 2] && d[i - 1] <= d[i - 3]) {
94+
return true;
95+
}
96+
if (i >= 4 && d[i - 1] == d[i - 3] && d[i] + d[i - 4] >= d[i - 2]) {
97+
return true;
98+
}
99+
if (i >= 5 && d[i - 2] >= d[i - 4] && d[i - 1] <= d[i - 3] && d[i] >= d[i - 2] - d[i - 4] && d[i - 1] + d[i - 5] >= d[i - 3]) {
100+
return true;
101+
}
102+
}
103+
return false;
104+
}
105+
}
106+
```
107+
108+
### **C++**
109+
110+
```cpp
111+
class Solution {
112+
public:
113+
bool isSelfCrossing(vector<int>& distance) {
114+
vector<int> d = distance;
115+
for (int i = 3; i < d.size(); ++i)
116+
{
117+
if (d[i] >= d[i - 2] && d[i - 1] <= d[i - 3]) return true;
118+
if (i >= 4 && d[i - 1] == d[i - 3] && d[i] + d[i - 4] >= d[i - 2]) return true;
119+
if (i >= 5 && d[i - 2] >= d[i - 4] && d[i - 1] <= d[i - 3] && d[i] >= d[i - 2] - d[i - 4] && d[i - 1] + d[i - 5] >= d[i - 3]) return true;
120+
}
121+
return false;
122+
}
123+
};
124+
```
60125
126+
### **Go**
127+
128+
```go
129+
func isSelfCrossing(distance []int) bool {
130+
d := distance
131+
for i := 3; i < len(d); i++ {
132+
if d[i] >= d[i-2] && d[i-1] <= d[i-3] {
133+
return true
134+
}
135+
if i >= 4 && d[i-1] == d[i-3] && d[i]+d[i-4] >= d[i-2] {
136+
return true
137+
}
138+
if i >= 5 && d[i-2] >= d[i-4] && d[i-1] <= d[i-3] && d[i] >= d[i-2]-d[i-4] && d[i-1]+d[i-5] >= d[i-3] {
139+
return true
140+
}
141+
}
142+
return false
143+
}
61144
```
62145
63146
### **...**
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
bool isSelfCrossing(vector<int>& distance) {
4+
vector<int> d = distance;
5+
for (int i = 3; i < d.size(); ++i)
6+
{
7+
if (d[i] >= d[i - 2] && d[i - 1] <= d[i - 3]) return true;
8+
if (i >= 4 && d[i - 1] == d[i - 3] && d[i] + d[i - 4] >= d[i - 2]) return true;
9+
if (i >= 5 && d[i - 2] >= d[i - 4] && d[i - 1] <= d[i - 3] && d[i] >= d[i - 2] - d[i - 4] && d[i - 1] + d[i - 5] >= d[i - 3]) return true;
10+
}
11+
return false;
12+
}
13+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
func isSelfCrossing(distance []int) bool {
2+
d := distance
3+
for i := 3; i < len(d); i++ {
4+
if d[i] >= d[i-2] && d[i-1] <= d[i-3] {
5+
return true
6+
}
7+
if i >= 4 && d[i-1] == d[i-3] && d[i]+d[i-4] >= d[i-2] {
8+
return true
9+
}
10+
if i >= 5 && d[i-2] >= d[i-4] && d[i-1] <= d[i-3] && d[i] >= d[i-2]-d[i-4] && d[i-1]+d[i-5] >= d[i-3] {
11+
return true
12+
}
13+
}
14+
return false
15+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public boolean isSelfCrossing(int[] distance) {
3+
int[] d = distance;
4+
for (int i = 3; i < d.length; ++i) {
5+
if (d[i] >= d[i - 2] && d[i - 1] <= d[i - 3]) {
6+
return true;
7+
}
8+
if (i >= 4 && d[i - 1] == d[i - 3] && d[i] + d[i - 4] >= d[i - 2]) {
9+
return true;
10+
}
11+
if (i >= 5 && d[i - 2] >= d[i - 4] && d[i - 1] <= d[i - 3] && d[i] >= d[i - 2] - d[i - 4] && d[i - 1] + d[i - 5] >= d[i - 3]) {
12+
return true;
13+
}
14+
}
15+
return false;
16+
}
17+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution:
2+
def isSelfCrossing(self, distance: List[int]) -> bool:
3+
d = distance
4+
for i in range(3, len(d)):
5+
if d[i] >= d[i - 2] and d[i - 1] <= d[i - 3]:
6+
return True
7+
if i >= 4 and d[i - 1] == d[i - 3] and d[i] + d[i - 4] >= d[i - 2]:
8+
return True
9+
if i >= 5 and d[i - 2] >= d[i - 4] and d[i - 1] <= d[i - 3] and d[i] >= d[i - 2] - d[i - 4] and d[i - 1] + d[i - 5] >= d[i - 3]:
10+
return True
11+
return False

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /