@@ -301,32 +301,46 @@ func dailyTemperatures(num []int) []int {
301
301
302
302
JavaScript:
303
303
``` javascript
304
- /**
305
- * @param {number[]} temperatures
306
- * @return {number[]}
307
- */
304
+ // 版本一
308
305
var dailyTemperatures = function (temperatures ) {
309
- let n = temperatures .length ;
310
- let res = new Array (n).fill (0 );
311
- let stack = []; // 递减栈 :用于存储元素右面第一个比他大的元素下标
306
+ const n = temperatures .length ;
307
+ const res = Array (n).fill (0 );
308
+ const stack = []; // 递增栈 :用于存储元素右面第一个比他大的元素下标
312
309
stack .push (0 );
313
310
for (let i = 1 ; i < n; i++ ) {
314
311
// 栈顶元素
315
- let top = stack[stack .length - 1 ];
312
+ const top = stack[stack .length - 1 ];
316
313
if (temperatures[i] < temperatures[top]) {
317
314
stack .push (i);
318
315
} else if (temperatures[i] === temperatures[top]) {
319
316
stack .push (i);
320
317
} else {
321
318
while (stack .length && temperatures[i] > temperatures[stack[stack .length - 1 ]]) {
322
- let top = stack .pop ();
319
+ const top = stack .pop ();
323
320
res[top] = i - top;
324
321
}
325
322
stack .push (i);
326
323
}
327
324
}
328
325
return res;
329
326
};
327
+
328
+
329
+ // 版本二
330
+ var dailyTemperatures = function (temperatures ) {
331
+ const n = temperatures .length ;
332
+ const res = Array (n).fill (0 );
333
+ const stack = []; // 递增栈:用于存储元素右面第一个比他大的元素下标
334
+ stack .push (0 );
335
+ for (let i = 1 ; i < n; i++ ) {
336
+ while (stack .length && temperatures[i] > temperatures[stack[stack .length - 1 ]]) {
337
+ const top = stack .pop ();
338
+ res[top] = i - top;
339
+ }
340
+ stack .push (i);
341
+ }
342
+ return res;
343
+ };
330
344
```
331
345
332
346
0 commit comments