freedom.99
Senior Member
Pick 3 số, thì có 4 trường hợp divisible by 3 với remainder là 000, 111, 222, 012.Bài 4 kiểu toán quá, mà em thì ghét toán cực..![]()
Q2 mấy bác optimize kiểu gì thế chứ em chơi 3 Heap cho mỗi mod 0 1 2 (size_max=3) xong tổng kết lại là ra
C#:public class Solution { public int MaximumSum(int[] nums) { [COLOR=rgb(29, 31, 32)] PriorityQueue<int, int>[] q = new PriorityQueue<int, int>[3];[/COLOR] for (int i = 0; i < 3; i++) q[i] = new(); foreach(var i in nums) { var c = i % 3; q[c].Enqueue(i,i); if (q[c].Count>3) q[c].Dequeue(); } List<int> l = new(); for (int i = 0; i < 3; i++) while (q[i].Count > 0) l.Add(q[i].Dequeue()); int rtn= 0; for(int i=0;i<l.Count;i++) for(int j=i+1;j<l.Count;j++) for(int k=j+1;k<l.Count;k++) { var sum = l[i] + l[j] + l[k]; if (sum % 3 == 0) rtn = Math.Max(sum, rtn); } return rtn; } }
Greedy tính cả 4 trường hợp là xong
via theNEXTvoz for iPhone



