hackerrank在Java中攀登的排行榜探针

时间:2019-07-28 08:26:40

标签: java

我遇到了运行时错误。请提出修改建议以及错误背后的原因

我解决这个问题的方法是将scores数组数据放在链接列表中,以简化重复项的删除操作。然后将alice的分数映射到哈希图中的等级。

public class Solution {

// Complete the climbingLeaderboard function below.
static int c = 1;
static int[] climbingLeaderboard(int[] scores, int[] alice) {
    List<Integer> allScores = new LinkedList();
    for(int i=0;i<scores.length;i++)
        allScores.add(scores[i]);
    ListIterator<Integer> p = allScores.listIterator();
    ListIterator<Integer> q = allScores.listIterator(0);
    while(p.hasNext()){
        if(p.next() == q.next()){
            q.remove();
            continue;
        }
        p.next();q.next();
    }
    Map<Integer,Integer> scoreRank = new HashMap<Integer,Integer>();
    for(int i=0;i<alice.length;i++){
        p = allScores.listIterator();
        while(p.hasNext()){
            if(alice[i]>=p.next()){
                c++;
                scoreRank.put(alice[i],c);
                break;
            }
            else 
                p.next();
        }
    }
    int[] res = new int[alice.length];
    for(int i=0;i<alice.length;i++)
        res[i] = scoreRank.get(alice[i]);
    return res;


}

0 个答案:

没有答案