[2110] 股票平滑下跌阶段的数目
This commit is contained in:
parent
fc3c20df6b
commit
751db3ab93
|
|
@ -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
|
||||||
|
|
||||||
|
*/
|
||||||
Loading…
Reference in New Issue