📅  最后修改于: 2023-12-03 15:41:08.110000             🧑  作者: Mango
给定一个整数数组,找到第一个元素最小的子数组,计算这种情况的数量。
输入:[1,2,1,3,4]
输出:2
解释:第一个元素最小的子数组是[1,2,1]和[1]。
使用双指针方法,从左到右遍历数组,用一个指针指向第一个元素最小的子数组的起始位置,另一个指针向右移动,寻找最小子数组的终止位置。
当右指针所在元素小于左指针所在元素时,更新左指针位置,计算子数组数量,继续右指针向右移动。当右指针所在元素大于等于左指针所在元素时,继续右指针向右移动,直到找到下一个比左指针所在元素更小的元素。
class Solution:
def first_min_arr_count(self, nums: List[int]) -> int:
count, l, r = 0, 0, 1
while r < len(nums):
if nums[r] < nums[l]:
count += r - l
l = r
elif nums[r] == nums[l]:
r += 1
else:
r += 1
return count
def first_min_arr_count(self, nums: List[int]) -> int: