Java

时间:2019-02-03 17:06:31

标签: java time-complexity

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)正在玩街机游戏,想爬到排行榜的顶端,想追踪自己的排名。该游戏使用密集排名,因此其排行榜的工作方式如下:

得分最高的玩家在排行榜上排名排名。 得分相等的玩家将获得相同的排名号,下一位玩家将获得紧随其后的排名号。

0 个答案:

没有答案