Skip to content

Latest commit

 

History

History
147 lines (110 loc) · 3.42 KB

File metadata and controls

147 lines (110 loc) · 3.42 KB

English Version

题目描述

给你一个整数数组 prices ,表示一支股票的历史每日股价,其中 prices[i] 是这支股票第 i 天的价格。

一个 平滑下降的阶段 定义为:对于 连续一天或者多天 ,每日股价都比 前一日股价恰好少 1 ,这个阶段第一天的股价没有限制。

请你返回 平滑下降阶段 的数目。

 

示例 1:

输入:prices = [3,2,1,4]
输出:7
解释:总共有 7 个平滑下降阶段:
[3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1]
注意,仅一天按照定义也是平滑下降阶段。

示例 2:

输入:prices = [8,6,7,7]
输出:4
解释:总共有 4 个连续平滑下降阶段:[8], [6], [7] 和 [7]
由于 8 - 6 ≠ 1 ,所以 [8,6] 不是平滑下降阶段。

示例 3:

输入:prices = [1]
输出:1
解释:总共有 1 个平滑下降阶段:[1]

 

提示:

  • 1 <= prices.length <= 105
  • 1 <= prices[i] <= 105

解法

Python3

class Solution:
    def getDescentPeriods(self, prices: List[int]) -> int:
        i, n = 0, len(prices)
        ans = 0
        while i < n:
            j = i
            while j + 1 < n and prices[j] - prices[j + 1] == 1:
                j += 1
            t = j - i + 1
            ans += t * (t + 1) // 2
            i = j + 1
        return ans

Java

class Solution {
    public long getDescentPeriods(int[] prices) {
        long ans = 0;
        for (int i = 0, n = prices.length; i < n;) {
            int j = i;
            for (; j + 1 < n && prices[j] - prices[j + 1] == 1; ++j)
                ;
            int t = j - i + 1;
            ans += (long) t * (t + 1) / 2;
            i = j + 1;
        }
        return ans;
    }
}

C++

class Solution {
public:
    long long getDescentPeriods(vector<int>& prices) {
        long long ans = 0;
        for (int i = 0, n = prices.size(); i < n;) {
            int j = i;
            for (; j + 1 < n && prices[j] - prices[j + 1] == 1; ++j)
                ;
            int t = j - i + 1;
            ans += (long long)t * (t + 1) / 2;
            i = j + 1;
        }
        return ans;
    }
};

Go

func getDescentPeriods(prices []int) int64 {
	var ans int64
	for i, n := 0, len(prices); i < n; {
		j := i
		for ; j+1 < n && prices[j]-prices[j+1] == 1; j++ {
		}
		t := j - i + 1
		ans += int64(t * (t + 1) / 2)
		i = j + 1
	}
	return ans
}

TypeScript

...