他们人手一把玩具枪,并且他们喜欢把枪举在头顶上。
每一次练习射击,他们都会朝正前方发射一发水弹。
这个时候,第i个人射击的水弹,就会击中在他前面第一个比他高的人。
牛牛认为这样的练习十分的荒唐,完全就是对长得高的人的伤害。
于是它定义了一个荒唐度,初始为0。
对于第i个人,如中他击中了第j个人,则荒唐度加j,如果没有击中任何人,则荒唐度加0.
牛牛想问你,你能计算出荒唐度是多少吗?
他们人手一把玩具枪,并且他们喜欢把枪举在头顶上。
每一次练习射击,他们都会朝正前方发射一发水弹。
这个时候,第i个人射击的水弹,就会击中在他前面第一个比他高的人。
牛牛认为这样的练习十分的荒唐,完全就是对长得高的人的伤害。
于是它定义了一个荒唐度,初始为0。
对于第i个人,如中他击中了第j个人,则荒唐度加j,如果没有击中任何人,则荒唐度加0.
牛牛想问你,你能计算出荒唐度是多少吗?
5,[1,2,3,4,5]
0
没有一个人击中任何一个人
5,[5,4,3,2,1]
10
第二个人击中第一个人,第三个人击中第二个人,第四个人击中第三个人,第五个人击中第四个人; 1+2+3+4=10
一个整数n()
一个数组a()
a下标从0开始,
class Solution: def solve(self , n , a ): res = 0 compa = [(a[0],1)] for i in range(1,n): while compa and a[i]>=compa[-1][0]: compa.pop() compa.append((a[i],i+1)) if len(compa)!=1: res += compa[-2][-1] return res
class Solution: def solve(self , n , a ): stack=[] res=0 for i in range(n): while(len(stack) and a[stack[len(stack)-1]]<=a[i]): stack.pop() if len(stack): res = res + stack[len(stack)-1]+1 stack.append(i) return res