📌  相关文章
📜  大于其左侧所有元素的数组元素的计数(1)

📅  最后修改于: 2023-12-03 15:37:52.230000             🧑  作者: Mango

大于其左侧所有元素的数组元素的计数

这是一个经典的算法问题,给定一个整数数组,计算其中有多少个数大于其左侧所有数。

算法思想

我们可以使用一个变量 max_num 来记录左侧所有数的最大值,然后遍历数组,如果当前数大于 max_num,则计数器加一,并将 max_num 更新为当前数。

具体来说,假设当前已经遍历到数组的第 i 个数,我们可以用一个变量 count 来记录已有多少个数满足条件(即大于前面所有数),用一个变量 max_num 来记录前面所有数的最大值。然后,对于当前数 nums[i]

  • 如果 nums[i] > max_num,则说明它大于前面所有数,计数器加一,max_num 赋值为 nums[i]
  • 否则,max_num 不变,继续遍历。

遍历完成后, count 即为满足条件的数的个数。

示例代码

下面是 Python 的代码实现:

def count(nums):
    count = 0  # 初始化计数器
    max_num = float('-inf')  # 初始化最大值为负无穷
    for i in range(len(nums)):
        if nums[i] > max_num:
            count += 1
            max_num = nums[i]
    return count
复杂度分析

这个算法只需要遍历一遍数组,所以时间复杂度为 $O(n)$。空间复杂度为 $O(1)$,因为我们只需要用常数个变量来保存计数器和最大值。