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 d4a75dc

Browse files
committed
feat: add solutions to lc problem: No.2210
No.2210.Count Hills and Valleys in an Array
1 parent fcdfa34 commit d4a75dc

File tree

6 files changed

+173
-61
lines changed

6 files changed

+173
-61
lines changed

‎solution/2200-2299/2210.Count Hills and Valleys in an Array/README.md‎

Lines changed: 64 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,26 @@
7171
```python
7272
class Solution:
7373
def countHillValley(self, nums: List[int]) -> int:
74-
count = 0
75-
pt = 0
76-
while pt < len(nums)-1:
77-
if nums[pt] == nums[pt+1]:
78-
nums.pop(pt)
79-
continue
80-
else:
81-
pt += 1
82-
for i in range(1, len(nums)-1):
83-
if nums[i] < nums[i+1] and nums[i-1] > nums[i]:
84-
count += 1
85-
continue
86-
elif nums[i] > nums[i+1] and nums[i] > nums[i-1]:
87-
count += 1
74+
arr = [nums[0]]
75+
for v in nums[1:]:
76+
if v != arr[-1]:
77+
arr.append(v)
78+
return sum((arr[i] < arr[i - 1]) == (arr[i] < arr[i + 1]) for i in range(1, len(arr) - 1))
79+
```
80+
81+
```python
82+
class Solution:
83+
def countHillValley(self, nums: List[int]) -> int:
84+
ans = j = 0
85+
for i in range(1, len(nums) - 1):
86+
if nums[i] == nums[i + 1]:
8887
continue
89-
return count
88+
if nums[i] > nums[j] and nums[i] > nums[i + 1]:
89+
ans += 1
90+
if nums[i] < nums[j] and nums[i] < nums[i + 1]:
91+
ans += 1
92+
j = i
93+
return ans
9094
```
9195

9296
### **Java**
@@ -96,24 +100,64 @@ class Solution:
96100
```java
97101
class Solution {
98102
public int countHillValley(int[] nums) {
99-
int count = 0;
100-
for (int i = 1, j = 0; i < nums.length - 1; i++) {
103+
int ans = 0;
104+
for (int i = 1, j = 0; i < nums.length - 1; ++i) {
101105
if (nums[i] == nums[i + 1]) {
102106
continue;
103107
}
104108
if (nums[i] > nums[j] && nums[i] > nums[i + 1]) {
105-
count++;
109+
++ans;
106110
}
107111
if (nums[i] < nums[j] && nums[i] < nums[i + 1]) {
108-
count++;
112+
++ans;
109113
}
110114
j = i;
111115
}
112-
return count;
116+
return ans;
113117
}
114118
}
115119
```
116120

121+
### **C++**
122+
123+
```cpp
124+
class Solution {
125+
public:
126+
int countHillValley(vector<int>& nums) {
127+
int ans = 0;
128+
for (int i = 1, j = 0; i < nums.size() - 1; ++i)
129+
{
130+
if (nums[i] == nums[i + 1]) continue;
131+
if (nums[i] > nums[j] && nums[i] > nums[i + 1]) ++ans;
132+
if (nums[i] < nums[j] && nums[i] < nums[i + 1]) ++ans;
133+
j = i;
134+
}
135+
return ans;
136+
}
137+
};
138+
```
139+
140+
### **Go**
141+
142+
```go
143+
func countHillValley(nums []int) int {
144+
ans := 0
145+
for i, j := 1, 0; i < len(nums)-1; i++ {
146+
if nums[i] == nums[i+1] {
147+
continue
148+
}
149+
if nums[i] > nums[j] && nums[i] > nums[i+1] {
150+
ans++
151+
}
152+
if nums[i] < nums[j] && nums[i] < nums[i+1] {
153+
ans++
154+
}
155+
j = i
156+
}
157+
return ans
158+
}
159+
```
160+
117161
### **TypeScript**
118162

119163
```ts

‎solution/2200-2299/2210.Count Hills and Valleys in an Array/README_EN.md‎

Lines changed: 64 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,26 @@ First make the consecutive duplicate value to be unique with the side values.
6060
```python
6161
class Solution:
6262
def countHillValley(self, nums: List[int]) -> int:
63-
count = 0
64-
pt = 0
65-
while pt < len(nums)-1:
66-
if nums[pt] == nums[pt+1]:
67-
nums.pop(pt)
68-
continue
69-
else:
70-
pt += 1
71-
for i in range(1, len(nums)-1):
72-
if nums[i] < nums[i+1] and nums[i-1] > nums[i]:
73-
count += 1
74-
continue
75-
elif nums[i] > nums[i+1] and nums[i] > nums[i-1]:
76-
count += 1
63+
arr = [nums[0]]
64+
for v in nums[1:]:
65+
if v != arr[-1]:
66+
arr.append(v)
67+
return sum((arr[i] < arr[i - 1]) == (arr[i] < arr[i + 1]) for i in range(1, len(arr) - 1))
68+
```
69+
70+
```python
71+
class Solution:
72+
def countHillValley(self, nums: List[int]) -> int:
73+
ans = j = 0
74+
for i in range(1, len(nums) - 1):
75+
if nums[i] == nums[i + 1]:
7776
continue
78-
return count
77+
if nums[i] > nums[j] and nums[i] > nums[i + 1]:
78+
ans += 1
79+
if nums[i] < nums[j] and nums[i] < nums[i + 1]:
80+
ans += 1
81+
j = i
82+
return ans
7983
```
8084

8185
### **Java**
@@ -85,24 +89,64 @@ Use two pointers to solve the problem
8589
```java
8690
class Solution {
8791
public int countHillValley(int[] nums) {
88-
int count = 0;
89-
for (int i = 1, j = 0; i < nums.length - 1; i++) {
92+
int ans = 0;
93+
for (int i = 1, j = 0; i < nums.length - 1; ++i) {
9094
if (nums[i] == nums[i + 1]) {
9195
continue;
9296
}
9397
if (nums[i] > nums[j] && nums[i] > nums[i + 1]) {
94-
count++;
98+
++ans;
9599
}
96100
if (nums[i] < nums[j] && nums[i] < nums[i + 1]) {
97-
count++;
101+
++ans;
98102
}
99103
j = i;
100104
}
101-
return count;
105+
return ans;
102106
}
103107
}
104108
```
105109

110+
### **C++**
111+
112+
```cpp
113+
class Solution {
114+
public:
115+
int countHillValley(vector<int>& nums) {
116+
int ans = 0;
117+
for (int i = 1, j = 0; i < nums.size() - 1; ++i)
118+
{
119+
if (nums[i] == nums[i + 1]) continue;
120+
if (nums[i] > nums[j] && nums[i] > nums[i + 1]) ++ans;
121+
if (nums[i] < nums[j] && nums[i] < nums[i + 1]) ++ans;
122+
j = i;
123+
}
124+
return ans;
125+
}
126+
};
127+
```
128+
129+
### **Go**
130+
131+
```go
132+
func countHillValley(nums []int) int {
133+
ans := 0
134+
for i, j := 1, 0; i < len(nums)-1; i++ {
135+
if nums[i] == nums[i+1] {
136+
continue
137+
}
138+
if nums[i] > nums[j] && nums[i] > nums[i+1] {
139+
ans++
140+
}
141+
if nums[i] < nums[j] && nums[i] < nums[i+1] {
142+
ans++
143+
}
144+
j = i
145+
}
146+
return ans
147+
}
148+
```
149+
106150
### **TypeScript**
107151

108152
```ts
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
int countHillValley(vector<int>& nums) {
4+
int ans = 0;
5+
for (int i = 1, j = 0; i < nums.size() - 1; ++i)
6+
{
7+
if (nums[i] == nums[i + 1]) continue;
8+
if (nums[i] > nums[j] && nums[i] > nums[i + 1]) ++ans;
9+
if (nums[i] < nums[j] && nums[i] < nums[i + 1]) ++ans;
10+
j = i;
11+
}
12+
return ans;
13+
}
14+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
func countHillValley(nums []int) int {
2+
ans := 0
3+
for i, j := 1, 0; i < len(nums)-1; i++ {
4+
if nums[i] == nums[i+1] {
5+
continue
6+
}
7+
if nums[i] > nums[j] && nums[i] > nums[i+1] {
8+
ans++
9+
}
10+
if nums[i] < nums[j] && nums[i] < nums[i+1] {
11+
ans++
12+
}
13+
j = i
14+
}
15+
return ans
16+
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
class Solution {
22
public int countHillValley(int[] nums) {
3-
int count = 0;
4-
for (int i = 1, j = 0; i < nums.length - 1; i++) {
3+
int ans = 0;
4+
for (int i = 1, j = 0; i < nums.length - 1; ++i) {
55
if (nums[i] == nums[i + 1]) {
66
continue;
77
}
88
if (nums[i] > nums[j] && nums[i] > nums[i + 1]) {
9-
count++;
9+
++ans;
1010
}
1111
if (nums[i] < nums[j] && nums[i] < nums[i + 1]) {
12-
count++;
12+
++ans;
1313
}
1414
j = i;
1515
}
16-
return count;
16+
return ans;
1717
}
18-
}
18+
}
Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
class Solution:
22
def countHillValley(self, nums: List[int]) -> int:
3-
count = 0
4-
pt = 0
5-
while pt < len(nums)-1:
6-
if nums[pt] == nums[pt+1]:
7-
nums.pop(pt)
3+
ans = j = 0
4+
for i in range(1, len(nums) - 1):
5+
if nums[i] == nums[i + 1]:
86
continue
9-
else:
10-
pt += 1
11-
for i in range(1, len(nums)-1):
12-
if nums[i] < nums[i+1] and nums[i-1] > nums[i]:
13-
count += 1
14-
continue
15-
elif nums[i] > nums[i+1] and nums[i] > nums[i-1]:
16-
count += 1
17-
continue
18-
return count
7+
if nums[i] > nums[j] and nums[i] > nums[i + 1]:
8+
ans += 1
9+
if nums[i] < nums[j] and nums[i] < nums[i + 1]:
10+
ans += 1
11+
j = i
12+
return ans

0 commit comments

Comments
(0)

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