双周赛第三题感觉有点遗憾
438
2023.01.21
发布于 未知归属地

第三题想到了按nums2排序, 优先队列维护最大值,结果不知道哪里写的有问题WA

//错误的代码
class Solution {
    public long maxScore(int[] nums1, int[] nums2, int k) {
        int n = nums1.length;
        int[][] nums = new int[n][2];
        for(int i = 0; i < n; ++i){
            nums[i][0] = nums1[i];
            nums[i][1] = nums2[i];
        }
        Arrays.sort(nums, (a, b) -> b[1] - a[1]);
        PriorityQueue<Integer> q = new PriorityQueue<Integer>();
        int i = 0;
        long sum = 0;
        int min = Integer.MAX_VALUE;
        while(k > 0){
            sum += nums[i][0];
            min = Math.min(min, nums[i][1]);
            q.offer(nums[i][0]);
            k--;
            i++;
        }
        long ans = 0;
        ans = sum * min;
        for(; i < n; ++i){
            if((long)(sum - q.peek() + nums[i][0]) * nums[i][1] >= ans){
                sum = sum - q.poll() + nums[i][0];
                q.offer(nums[i][0]);
                ans = sum * nums[i][1];
            }
        }
        return ans;
    }
}

然后就是这个用例一直过不去,调到最后也没调出来。
image.png

感觉还是题目做的少了,一些错误都看不出来,之后还是要努力刷题
明早看看大佬的题解看看错在哪了吧

评论 (2)