莉莉丝8/11后台开发笔试题

第三题咋搞啊xdm,死活通不过啊。前两题都通过了,大家可以参考下。

第一题

public ListNode formatList (ListNode head) {
        // write code here
        ListNode trail = head.next;
        ListNode newHead = trail.next;
        while(trail != null && newHead != null){
            trail.next = newHead.next;
            newHead.next = head;
            trail = trail.next;
            head = newHead;
            if(trail != null) { newHead = trail.next; }
        }
        return head;
    }

第二题

public long ans (int[] array, int k) {
        // write code here
        long count = 0;
        int len = array.length;
        Arrays.sort(array);
        for(int i = 0;i < len;i++){
            if(array[i] >= k){ break; }
            for(int j = i+1;j < len;j++){
                if(array[i] + array[j] <= k){ count++; }
                else{ break; }
            }
        }
        return count;
    }

第三题

public static long minimum (int[] a) {
        // write code here
        long sum = 0;
        for(int num : a){ sum+= num; }
        if(sum % 2 == 0){ return 0; }
        long avg = sum / 2;
        int len = a.length;
        long[] dp = new long[(int)avg+1];
        for(int i = 1;i <= len;i++){
            for(int j = (int)avg;j >= 1;j++){
                if(j >= a[i-1]){ dp[j] = Math.max(dp[j],dp[j-a[i-1]]+a[i-1]); }
            }
        }

        return sum - 2*dp[(int)avg];
    }
#莉莉丝笔试##笔试题目##莉莉丝游戏#
全部评论
第三题你双循环肯定超时呀,用前缀数组加双指针做
1
送花
回复
分享
发布于 2021-08-11 21:02
第三题滑动窗口找最接近sum/2
1
送花
回复
分享
发布于 2021-08-11 21:10
滴滴
校招火热招聘中
官网直投
使用左右指针,如果这两个之间求出来的最后差比总sum一半大就l++否则r++
点赞
送花
回复
分享
发布于 2021-08-11 21:03
第二题暴力c++超时,需要二分 第三题是和的绝对值差的最小值吗, 70%,显示答案不对
点赞
送花
回复
分享
发布于 2021-08-11 21:04
第二题咋整
点赞
送花
回复
分享
发布于 2021-08-11 21:06
第三题我dfs加剪枝过了20,我最后也没检查出哪里错了
点赞
送花
回复
分享
发布于 2021-08-11 21:13
大佬能说下三个题目是啥吗?
点赞
送花
回复
分享
发布于 2021-08-12 18:05

相关推荐

点赞 评论 收藏
转发
点赞 评论 收藏
转发
1 5 评论
分享
牛客网
牛客企业服务