Re: [閒聊] 每日leetcode

看板Marginalman作者 (可可粉)時間1年前 (2024/12/15 22:26), 編輯推噓0(002)
留言2則, 2人參與, 1年前最新討論串1208/1554 (看更多)
1792. Maximum Average Pass Ratio 本來想說是不是MinHeap每次都找合格率最差的班級的去+1就好了 看提示才知道原來是要用MaxHeap每次都找出+1前後差距最大的 public double MaxAverageRatio(int[][] classes, int extraStudents) { var pq = new PriorityQueue<int[], double>( Comparer<double>.Create((x,y) => y.CompareTo(x))); foreach (var oldClass in classes) { var diffRatio = (double)(oldClass[0] + 1) / (oldClass[1] + 1) - (double)oldClass[0] / oldClass[1]; pq.Enqueue(oldClass, diffRatio); } for (int i=0;i < extraStudents;i++) { var max = pq.Dequeue(); var newClass = new int[2] {max[0] + 1, max[1] + 1}; var newRatio = (double)(newClass[0] + 1) / (newClass[1] + 1) - (double)newClass[0] / newClass[1]; pq.Enqueue(newClass, newRatio); } double sum = 0; while (pq.Count > 0) { var newClass = pq.Dequeue(); sum += (double)newClass[0] / newClass[1]; } var result = Math.Round(((double)sum / classes.Length), 5); return result; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.45.124 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1734272766.A.8C0.html

12/15 22:26, 1年前 , 1F
我一開始也是找最差 但我有用heap
12/15 22:26, 1F

12/15 22:32, 1年前 , 2F
大師
12/15 22:32, 2F
文章代碼(AID): #1dNkR-Z0 (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1dNkR-Z0 (Marginalman)