2022-12-29 leetcode 2393 双指针暴打动

2022-12-28  本文已影响0人  木马音响积木

You are given an array nums consisting of positive integers.

Return the number of subarrays of nums that are in strictly increasing order.

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/count-strictly-increasing-subarrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
动态规划,代码如下

class Solution:
    def countSubarrays(self, nums: List[int]) -> int:
        s,t=1,1
        for i in range(1,len(nums)):
            if nums[i]<=nums[i-1]:t=1
            else:t+=1
            s+=t
        return s

#双指针
class Solution:
    def countSubarrays(self, nums: List[int]) -> int:
        #双指针来解决
        n=len(nums)
        a=ans=0
        nums.append(-1)
        for i in range(1,n+1):
            if nums[i-1] >= nums[i]:
                w=i-a
                a=i
                ans+=w*(w+1)//2
        return ans

明显看出,如果一开始的数组是严格上升的,,,双指针只需要计算一次

上一篇 下一篇

猜你喜欢

热点阅读