[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