我遇到了运行时错误。请提出修改建议以及错误背后的原因
我解决这个问题的方法是将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;
}