public class Solution
{
public static void main(String[] args)
{
Scanner sc= new Scanner(System.in);
int p=sc.nextInt();
int ld[]=new int [p];
for(int i=0;i<p;i++)
ld[i]=sc.nextInt();
int games=sc.nextInt();
int sco[]=new int [games];
for(int i=0;i<games;i++)
sco[i]=sc.nextInt();
int b[]=new int [p+1];
for(int i=0;i<p;i++)
{
b[i]=ld[i];
}
for(int i=0;i<games;i++)
{
b[p]=sco[i];
int num=sco[i];
Arrays.sort(b);
int temp;
int j=0;
int len=b.length-1;
while (j<len)
{
temp=b[j];
b[j]=b[len];
b[len]=temp;
j++;
len--;
}
int result=mymethod(b,num);
System.out.println(result);
}
}
public static int mymethod(int a[],int number)
{
int len=a.length;
int c[]=new int [len];
int x = 1;
for(int i=0;i<len-1;i++)
{
try
{
if(a[i]!=a[i+1])
{
c[i]=x;
x++;
}
else if(a[i]==a[i+1])
{
c[i]=x;
}
}
catch (Exception e)
{
break;
}
}
c[c.length - 1] = x;
int g=0;
for(int i=0;i<len;i++)
{
if(number==a[i])
{
g=c[i];
}
}
return g;
}
}
这是一个黑客等级问题。 问题在于时间复杂度。 爱丽丝(Alice)正在玩街机游戏,想爬到排行榜的顶端,想追踪自己的排名。该游戏使用密集排名,因此其排行榜的工作方式如下:
得分最高的玩家在排行榜上排名排名。 得分相等的玩家将获得相同的排名号,下一位玩家将获得紧随其后的排名号。