📅  最后修改于: 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)$,因为我们只需要用常数个变量来保存计数器和最大值。