File tree 3 files changed +80
-17
lines changed
solution/0100-0199/0135.Candy
3 files changed +80
-17
lines changed Original file line number Diff line number Diff line change @@ -111,6 +111,36 @@ class Solution {
111
111
}
112
112
```
113
113
114
+ ``` java
115
+ class Solution {
116
+ public int candy (int [] ratings ) {
117
+ int n = ratings. length;
118
+ int up = 0 ;
119
+ int down = 0 ;
120
+ int peak = 0 ;
121
+ int candies = 1 ;
122
+ for (int i = 1 ; i < n; i++ ) {
123
+ if (ratings[i - 1 ] < ratings[i]) {
124
+ up++ ;
125
+ peak = up + 1 ;
126
+ down = 0 ;
127
+ candies += peak;
128
+ } else if (ratings[i] == ratings[i - 1 ]) {
129
+ peak = 0 ;
130
+ up = 0 ;
131
+ down = 0 ;
132
+ candies++ ;
133
+ } else {
134
+ down++ ;
135
+ up = 0 ;
136
+ candies += down + (peak > down ? 0 : 1 );
137
+ }
138
+ }
139
+ return candies;
140
+ }
141
+ }
142
+ ```
143
+
114
144
### ** C++**
115
145
116
146
``` cpp
Original file line number Diff line number Diff line change @@ -102,6 +102,36 @@ class Solution {
102
102
}
103
103
```
104
104
105
+ ``` java
106
+ class Solution {
107
+ public int candy (int [] ratings ) {
108
+ int n = ratings. length;
109
+ int up = 0 ;
110
+ int down = 0 ;
111
+ int peak = 0 ;
112
+ int candies = 1 ;
113
+ for (int i = 1 ; i < n; i++ ) {
114
+ if (ratings[i - 1 ] < ratings[i]) {
115
+ up++ ;
116
+ peak = up + 1 ;
117
+ down = 0 ;
118
+ candies += peak;
119
+ } else if (ratings[i] == ratings[i - 1 ]) {
120
+ peak = 0 ;
121
+ up = 0 ;
122
+ down = 0 ;
123
+ candies++ ;
124
+ } else {
125
+ down++ ;
126
+ up = 0 ;
127
+ candies += down + (peak > down ? 0 : 1 );
128
+ }
129
+ }
130
+ return candies;
131
+ }
132
+ }
133
+ ```
134
+
105
135
### ** C++**
106
136
107
137
``` cpp
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int candy (int [] ratings ) {
3
3
int n = ratings .length ;
4
- int [] left = new int [n ];
5
- int [] right = new int [n ];
6
- Arrays .fill (left , 1 );
7
- Arrays .fill (right , 1 );
8
- for (int i = 1 ; i < n ; ++i ) {
9
- if (ratings [i ] > ratings [i - 1 ]) {
10
- left [i ] = left [i - 1 ] + 1 ;
4
+ int up = 0 ;
5
+ int down = 0 ;
6
+ int peak = 0 ;
7
+ int candies = 1 ;
8
+ for (int i = 1 ; i < n ; i ++) {
9
+ if (ratings [i - 1 ] < ratings [i ]) {
10
+ up ++;
11
+ peak = up + 1 ;
12
+ down = 0 ;
13
+ candies += peak ;
14
+ } else if (ratings [i ] == ratings [i - 1 ]) {
15
+ peak = 0 ;
16
+ up = 0 ;
17
+ down = 0 ;
18
+ candies ++;
19
+ } else {
20
+ down ++;
21
+ up = 0 ;
22
+ candies += down + (peak > down ? 0 : 1 );
11
23
}
12
24
}
13
- for (int i = n - 2 ; i >= 0 ; --i ) {
14
- if (ratings [i ] > ratings [i + 1 ]) {
15
- right [i ] = right [i + 1 ] + 1 ;
16
- }
17
- }
18
- int ans = 0 ;
19
- for (int i = 0 ; i < n ; ++i ) {
20
- ans += Math .max (left [i ], right [i ]);
21
- }
22
- return ans ;
25
+ return candies ;
23
26
}
24
27
}
You can’t perform that action at this time.
0 commit comments