diff --git a/src/leecode/javascript/2110.股票平滑下跌阶段的数目.js b/src/leecode/javascript/2110.股票平滑下跌阶段的数目.js new file mode 100644 index 0000000..3195d2a --- /dev/null +++ b/src/leecode/javascript/2110.股票平滑下跌阶段的数目.js @@ -0,0 +1,61 @@ +/* + * @lc app=leetcode.cn id=2110 lang=javascript + * @lcpr version= + * + * [2110] 股票平滑下跌阶段的数目 + */ + +// @lc code=start +/** + * @param {number[]} prices + * @return {number} + */ +var getDescentPeriods = function (prices) { + // 使用双指针圈定连续的段,当段不连续后,计算连续段所有符合的子段数,重新寻找连续段 + let [left, right] = [0, 0]; + let ans = 0; + while (right <= prices.length - 1) { + if (right == left) { + // 重置后的位置 + right++; + continue; + } + // 不满足连续段 + if (right >= 1 && prices[right - 1] - prices[right] != 1) { + // 找出上一个连续段的个数 + let num = right - 1 - left + 1; + // 计算连续段所有符合的子段数 + ans += (num * (num + 1)) / 2; + // 重置连续段左右指针 + left = right; + continue; + } + right++; + } + right = prices.length - 1; + // 最后一次计算 + if (prices[right - 1] - prices[right] != 1) { + ans += 1; + } else { + let num = right - left + 1; + ans += (num * (num + 1)) / 2; + } + return ans; +}; +getDescentPeriods([3,2,1,4]); +// @lc code=end + +/* +// @lcpr case=start +// [3,2,1,4]\n +// @lcpr case=end + +// @lcpr case=start +// [8,6,7,7]\n +// @lcpr case=end + +// @lcpr case=start +// [1]\n +// @lcpr case=end + + */