他们人手一把玩具枪,并且他们喜欢把枪举在头顶上。
每一次练习射击,他们都会朝正前方发射一发水弹。
这个时候,第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开始,
import java.util.*; public class Solution { /** * * @param n int整型 n个人 * @param a int整型一维数组 ai代表第i个人的高度 * @return long长整型 */ public long solve (int n, int[] a) { // write code here long ht=0; int[] hts=new int[n]; int pre=0,ppre=0; if(n<=1){ return 0; } if(a[0]>a[1]){ ht=1; hts[1]=1; } if(n==2){ return ht; } pre=1; ppre=hts[pre-1]; for(int i=2;i<n;i++){ if(a[i]<a[i-1]){ hts[i]=i; }else{ pre=i-1; while(a[i]>=a[pre]&&(ppre=hts[pre])!=0){ if(a[i]<a[ppre-1]){ hts[i]=ppre; break; }else{ pre=ppre-1; } } } ht+=hts[i]; } return ht; } }