Most Profit Assigning Work LeetCode solution in Java
1class Solution {2public int maxProfitAssignment(int[] difficulty, int[] profit, int[] worker) {3PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> (b[1] - a[1]));4for (int i = 0; i < profit.length; i++) {5pq.add(new int[] {difficulty[i], profit[i]});6}7Arrays.sort(worker);8int p = 0;9for (int i = worker.length - 1; i >= 0 && !pq.isEmpty(); i--) {10if (worker[i] >= pq.peek()[0]) p = p + pq.peek()[1];11else {12while (!pq.isEmpty() && worker[i] < pq.peek()[0]) pq.poll();13if (!pq.isEmpty()) p = p + pq.peek()[1];14}15}16return p;17}18}