Skip to content

Commit 8baaa32

Browse files
committed
✨ [135] Candy - WTF?
1 parent 4d750a3 commit 8baaa32

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

135/my_solution.js

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/**
2+
* @param {number[]} ratings
3+
* @return {number}
4+
*/
5+
const candy = (ratings) => {
6+
let total = 0, prevSum = 1, min = 0, gap = 0;;
7+
// let total = 0, groupList = [], tmpGroupCount = 0;
8+
for (let i = 0; i < ratings.length; i++) {
9+
let curr = ratings[i],
10+
prev = (undefined === ratings[i - 1]) ? curr : ratings[i - 1],
11+
next = (undefined === ratings[i + 1]) ? curr : ratings[i + 1];
12+
// console.log("__")
13+
// console.log(prev)
14+
// console.log(next)
15+
// let sum = ((curr > prev) || (curr > next)) ? prevSum + 1 : 1;
16+
// if ()
17+
let sum = ((curr > prev) || (curr > next)) ? prevSum + 1 : 1;
18+
console.log("________________")
19+
console.log(`curr:${curr}, sum:${sum}, total:${total}`)
20+
if ((prev < curr || prev === curr) && curr > next) { // first time
21+
min = (prev === curr) ? sum - 1 : sum;
22+
sum = 0;
23+
gap++;
24+
console.log(`Setting the min for the first time min:${min}, gap:${gap}`)
25+
} else if (curr > next) {
26+
sum = 0;
27+
gap++;
28+
console.log(`going down - min:${min}, gap:${gap}`)
29+
} else if (curr < next || prev < curr || next === curr) {
30+
console.log(`going up / stagnent - min:${min}, gap:${gap}, sum:${sum}`)
31+
32+
if (min !== 0) {
33+
sum = 0;
34+
for (let i = 0; i < gap; i++) {
35+
sum += sum + 1;
36+
console.log(`>>> sum:${sum}`)
37+
}
38+
console.log(`> sum:${sum}`)
39+
40+
sum = ((((gap + 1) > min) ? (gap + 1) : min) + sum);
41+
console.log(`>> sum:${sum}`)
42+
min = 1;
43+
gap = 1;
44+
total += sum;
45+
sum = 0;
46+
}
47+
}
48+
49+
total += sum; // Going down - dont add
50+
51+
prevSum = sum;
52+
}
53+
return total;
54+
};
55+
56+
let x = candy([1, 0, 2]); // 5
57+
// let x = candy([1, 2, 2]); // 4
58+
// let x = candy([1, 2, 87, 87, 87, 2, 1]); // 13
59+
// let x = candy([1, 2, 3, 4, 5, 6, 6, 6, 1, 3, 2]); // 28
60+
// let x = candy([29, 51, 87, 87, 72, 12]); // 12
61+
console.log(x);

135/solution.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} ratings
3+
* @return {number}
4+
*/
5+
const candy = (ratings) => {
6+
let total = 0, prevSum = 1;
7+
for (let i = 0; i < ratings.length; i++) {
8+
let curr = ratings[i],
9+
prev = (undefined === ratings[i - 1]) ? curr : ratings[i - 1],
10+
next = (undefined === ratings[i + 1]) ? curr : ratings[i + 1];
11+
let sum = ((curr > prev) || (curr > next)) ? prevSum + 1 : 1;
12+
total += sum;
13+
prevSum = sum;
14+
}
15+
return total;
16+
};
17+

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
- [121. Best Time to Buy and Sell Stock](./121/)
3636
- [128. Longest Consecutive Sequence](./128/)
3737
- [133. Clone Graph](./133/)
38+
- [135. Candy](./135/)
3839
- [125. Valid Palindrome](./125/)
3940
- [141. Linked List Cycle](./141/)
4041
- [143. Reorder List](./143/)
@@ -110,7 +111,7 @@ Batch create:
110111
NOTE: JS IS HERE
111112
-->
112113
```ssh
113-
chapter=73 && mkdir ./$chapter && touch ./$chapter/my_solution.js && touch ./$chapter/solution.js && alias x="node ./$chapter/my_solution.js"
114+
chapter=135 && mkdir ./$chapter && touch ./$chapter/my_solution.js && touch ./$chapter/solution.js && alias x="node ./$chapter/my_solution.js"
114115
```
115116
> then you can use `x` for quick debug.
116117

0 commit comments

Comments
 (0)