算每个学生最高5个成绩的AVG.

1,建HashMap用PriorityQueue; 2,for each node{ put Map; 对每一个学生id建PriorityQueue; 加score; } 3,建AVG map (return type) for each id: keySet() 建PriorityQueue对每一个学生id; 算sum;

class Solution {
  public static void main(String[] args) {
     Solution test = new Solution();

       Node n1 = new Node(2,100);
       Node n2 = new Node(2,100);
       Node n3 = new Node(2,100);
       Node n4 = new Node(2,100);
       Node n5 = new Node(2,100);
       Node n6 = new Node(2,10);
       Node n7 = new Node(1,100);
       Node n8 = new Node(1,100);
       Node n9 = new Node(1,100);
       Node n10 = new Node(1,100);
       Node n11 = new Node(1,100);
       Node n12 = new Node(1,10);

    ArrayList<Node> list2 = new ArrayList<Node>();
    list2.add(n1);
    list2.add(n2);
    list2.add(n3);
    list2.add(n4);
    list2.add(n5);
    list2.add(n6);
    list2.add(n7);
    list2.add(n8);
    list2.add(n9);
    list2.add(n10);
    list2.add(n11);
    list2.add(n12);

        System.out.println(test.HighFive(list2));
    }
public Map<Integer,Double> HighFive(List<Node> Scores){
   Map<Integer, PriorityQueue<Integer>> map = new HashMap<Integer, PriorityQueue<Integer>>();
   for(Node s:Scores){
      map.putIfAbsent(s.id, new PriorityQueue<Integer>(5));
     PriorityQueue<Integer> ss = map.get(s.id);
     ss.offer(s.score);
     if(ss.size()>5)  ss.poll();
}
  HashMap<Integer,Double> avg  = new HashMap<Integer,Double>();
  for(int id:map.keySet()){
   PriorityQueue<Integer> pq = map.get(id);
   double sum = 0;
   for(int x:pq)
   sum += x;
  avg.put(id,sum/5);

}return avg;
}
}


class Node{
public int id;
public int score;
   public Node(int id,int score){
  this.id = id;
    this.score =score;
  }
  public int getid(){
  return id;
  }
  public int getscore(){
  return score;
  }
}

results matching ""

    No results matching ""