Skip to content

Commit 542cb4c

Browse files
committed
255th Commit
1 parent 6c5fe12 commit 542cb4c

File tree

3 files changed

+49
-4
lines changed

3 files changed

+49
-4
lines changed

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -289,10 +289,12 @@ Ace Coding Interview with 75 Qs
289289
[435]: ./src/page-5/435.%20Non-overlapping%20Intervals/eraseOverlapIntervals.ts
290290
[452]: ./src/page-5/452.%20Minimum%20Number%20of%20Arrows%20to%20Burst%20Balloons/findMinArrowShots.ts
291291

292-
| Monotonic Stack | | |
293-
| ----------------------- | -------- | ------ |
294-
| 739. Daily Temperatures | Solution | Medium |
295-
| 901. Online Stock Span | Solution | Medium |
292+
| Monotonic Stack | | |
293+
| ----------------------- | --------------- | ------ |
294+
| 739. Daily Temperatures | [Solution][739] | Medium |
295+
| 901. Online Stock Span | Solution | Medium |
296+
297+
[739]: ./src/page-7/739.%20Daily%20Temperatures/dailyTemperatures.ts
296298

297299
</details>
298300

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { dailyTemperatures } from './dailyTemperatures';
2+
3+
describe('739. Daily Temperatures', () => {
4+
test('dailyTemperatures', () => {
5+
{
6+
const temperatures = [73, 74, 75, 71, 69, 72, 76, 73];
7+
const expected = [1, 1, 4, 2, 1, 1, 0, 0];
8+
expect(dailyTemperatures(temperatures)).toStrictEqual(expected);
9+
}
10+
11+
{
12+
const temperatures = [30, 40, 50, 60];
13+
const expected = [1, 1, 1, 0];
14+
expect(dailyTemperatures(temperatures)).toStrictEqual(expected);
15+
}
16+
17+
{
18+
const temperatures = [30, 60, 90];
19+
const expected = [1, 1, 0];
20+
expect(dailyTemperatures(temperatures)).toStrictEqual(expected);
21+
}
22+
});
23+
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
type DailyTemperatures = (temperatures: number[]) => number[];
2+
3+
/**
4+
* Accepted
5+
*/
6+
export const dailyTemperatures: DailyTemperatures = (temperatures) => {
7+
const answer: number[] = Array(temperatures.length).fill(0);
8+
const stack: number[] = [];
9+
10+
for (let i = 0; i < temperatures.length; i++) {
11+
while (stack.length > 0 && temperatures[i] > temperatures[stack[stack.length - 1]]) {
12+
const index = stack.pop() as number;
13+
answer[index] = i - index;
14+
}
15+
16+
stack.push(i);
17+
}
18+
19+
return answer;
20+
};

0 commit comments

Comments
 (0)