From ada2de5c1af73407d8ae5d7fb5aa27d3331b2763 Mon Sep 17 00:00:00 2001 From: yi-ge Date: Thu, 11 Jun 2020 13:32:29 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=AF=8F=E6=97=A5=E6=B8=A9=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++++ src/array/daily-temperatures.js | 18 ++++++++++++++++++ test/array/daily-temperatures.test.js | 5 +++++ 3 files changed, 28 insertions(+) create mode 100644 src/array/daily-temperatures.js create mode 100644 test/array/daily-temperatures.test.js diff --git a/README.md b/README.md index a809885..75531d6 100644 --- a/README.md +++ b/README.md @@ -371,6 +371,11 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重 - LeetCode 238. 除自身以外数组的乘积 - LintCode 1310. 数组除了自身的乘积 +- [每日温度](src/array/daily-temperatures.js) + + - LeetCode 739. 每日温度 + - LintCode 1060. 每日温度 + ## 栈 - [最大矩阵](src/stack/maximal-rectangle.js) diff --git a/src/array/daily-temperatures.js b/src/array/daily-temperatures.js new file mode 100644 index 0000000..0994251 --- /dev/null +++ b/src/array/daily-temperatures.js @@ -0,0 +1,18 @@ +/** + * @param {number[]} T + * @return {number[]} + */ +export const dailyTemperatures = function (T) { + const len = T.length + const ans = new Array(len).fill(0) + const stack = [] + for (let i = 0; i < len; i++) { + const temperature = T[i] + while (stack.length && temperature > T[stack[stack.length - 1]]) { + const prevIndex = stack.pop() + ans[prevIndex] = i - prevIndex + } + stack.push(i) + } + return ans +} diff --git a/test/array/daily-temperatures.test.js b/test/array/daily-temperatures.test.js new file mode 100644 index 0000000..79ecda3 --- /dev/null +++ b/test/array/daily-temperatures.test.js @@ -0,0 +1,5 @@ +import { dailyTemperatures } from '../../src/array/daily-temperatures.js' + +test('每日温度', () => { + expect(dailyTemperatures([73, 74, 75, 71, 69, 72, 76, 73])).toEqual([1, 1, 4, 2, 1, 1, 0, 0]) +})