PDD笔试题目题解

100+100+100+0.
感觉自己的代码质量贼差。

3.13 收到笔试通过。

import java.util.Arrays;
import java.util.Scanner;

/**
 * @ClassName PACKAGE_NAME.Main
 * @Desciption
 * @Author S
 * @DateTime 2019-03-10 16:34
 * @Version 1.0
 **/

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] a = new int[n];
        int[] b = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = in.nextInt();
        }
        for (int i = 0; i < n; i++) {
            b[i] = in.nextInt();
        }

        Arrays.sort(a);
        Arrays.sort(b);
        int sum = 0;

        for (int i = 0; i < n; i++) {
            sum += a[i] * b[n - i - 1];
        }
        System.out.println(sum);
    }
}

import java.util.*;

/**
 * @ClassName PACKAGE_NAME.Main
 * @Desciption
 * @Author S
 * @DateTime 2019-03-10 16:34
 * @Version 1.0
 **/

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.next();
        str = str.toLowerCase();
        if (str.length() <= 0) {
            System.out.println();
            return;
        }
        int[] record = new int[26];
        HashMap<Character, Integer> map = new HashMap<>();


        for (int i = 0; i < str.length(); i++) {
            map.put(str.charAt(i), map.getOrDefault(str.charAt(i), 0) + 1);
        }

        char ans = str.charAt(0);
        for (int i = 0; i < str.length(); i++) {
            if (map.get(str.charAt(i)) < 1) {
                ans = str.charAt(i);
                break;
            } else {
                // 这里有错,应该是样例简单才通过的,参见回帖
                if (i + 1 < str.length() && str.charAt(i+1) < str.charAt(i)) {
                    ans = str.charAt(i+1);
                    map.put(str.charAt(i), map.get(str.charAt(i)) - 1);
                } else {
                    ans = str.charAt(i);
                    break;
                }
            }
        }
        System.out.println(ans);
    }
}
import java.util.*;

/**
 * @ClassName PACKAGE_NAME.Main
 * @Desciption
 * @Author S
 * @DateTime 2019-03-10 16:34
 * @Version 1.0
 **/

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int d = in.nextInt();
        int[] a = new int[n];
        int[] b = new int[n];
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            a[i] = in.nextInt();
            b[i] = in.nextInt();
            map.put(a[i], b[i]);
        }
        Arrays.sort(a);
        for (int i = 0; i < n; i++) {
            b[i] = map.get(a[i]);
        }

        // i坐标 及 以后的最大的值
        int[] maxN = new int[n];
        maxN[n-1] = b[n-1];
        for (int i = n - 2; i >= 0; i--) {
            if (maxN[i+1] < b[i]) {
                maxN[i] = b[i];
            } else {
                maxN[i] = maxN[i+1];
            }
        }
        // 第i个银行,可选第二银行的范围;最后一个银行没有选择
        int[] indexI = new int[n];
        for (int i = 0; i < n; i++) {
            int j = 1;
            if (i != 0) {
                j = indexI[i-1];
            }
            for (; j < n; j++) {
                if (a[j] - a[i] >= d) {
                    indexI[i] = j;
                    break;
                }
            }
            if (j == n) {
                indexI[i] = -1;
                for (;i < n; i++) {
                    indexI[i] = -1;
                }
                break;
            }
        }
        int sum = 0;
        for (int i = 0; i < n - 1; i++) {
            if (indexI[i] == -1) {
                continue;
            }
            int tempSum = maxN[indexI[i]] + b[i];
            if (tempSum > sum) {
                sum = tempSum;
            }
        }
        System.out.println(sum);

    }
}

#笔试题目##题解##拼多多##春招#
全部评论
为什么我用两个for超时?
点赞 回复 分享
发布于 2019-03-10 22:49
第三题的解法很聪明呦~
点赞 回复 分享
发布于 2019-03-15 15:27
第一题不是说,,,a可以排序。。。b不可以排序吗???我懵了
点赞 回复 分享
发布于 2019-03-11 14:43
大佬咱俩第一题代码一模一样啊,会不会被查重。。
点赞 回复 分享
发布于 2019-03-10 23:10
T2的话用例是cdadc能过嘛🤔
点赞 回复 分享
发布于 2019-03-10 21:41
有大佬给看下题目么,菜鸡都没有机会答题,┭┮﹏┭┮
点赞 回复 分享
发布于 2019-03-10 20:35
第二题到底啥意思啊,不是输出代码里字典序里最小的吗?
点赞 回复 分享
发布于 2019-03-10 20:12
大佬,第二题的代码,如果测试用例是bdaBD怎么办,大佬的代码会输出b啊。
点赞 回复 分享
发布于 2019-03-10 20:00
牛逼
点赞 回复 分享
发布于 2019-03-10 19:42
大佬
点赞 回复 分享
发布于 2019-03-10 19:09
大佬
点赞 回复 分享
发布于 2019-03-10 18:52
d大佬
点赞 回复 分享
发布于 2019-03-10 18:51
第四题输出0可以有10%
点赞 回复 分享
发布于 2019-03-10 18:51
niubility……
点赞 回复 分享
发布于 2019-03-10 18:49
大佬
点赞 回复 分享
发布于 2019-03-10 18:48

相关推荐

04-09 13:46
已编辑
华东师范大学 算法工程师
本人双一流本+985硕,ICPC铜、CCPC邀请赛银,三篇一作论文(一篇已经中了ACL&nbsp;Finding,还有两篇在投中,LLM/LVLM&nbsp;Safety方向),零零散散拿了一点荣誉(华师大优秀学业奖学金),没有实习经历。目标是找一个中大厂的大模型相关的实习--------------------------------------2026.4.09后面基本上全挂了,接了上海&nbsp;ai&nbsp;lab&nbsp;的&nbsp;offer&nbsp;。最近事情太多了,手头论文要&nbsp;rebuttal&nbsp;和转投,精力不够,没功夫接着找了。而且,简历上都是科研经历似乎大厂们不太喜欢,打算还是在&nbsp;ailab&nbsp;沉淀沉淀。誓死效忠&nbsp;ai&nbsp;lab!我是&nbsp;ai&nbsp;lab&nbsp;孝子2026.3.26蚂蚁一面都在问论文,聊开放性问题,有点像AI&nbsp;Lab的一面啊。2026.3.25字节伤我好深,问我大模型全量微调、多机多卡的训练细节,组里就几张3090的我是真的不知道啊orz。做出了后面的算法题,但是感觉可能要被挂。2026.3.23PDD约3.24二面这周有点疯狂,有PDD、蚂蚁、字节三场面试。2026.3.21PDD一面又遇到了友好的面试官大哥,泪目了。手撕注意力机制,算法题求n个矩形的面积(得去除重叠部分),一直在聊我的论文,没问八股,就不单独出面经了。2026.3.20百度、快手简历挂投了B站蚂蚁约面3.262026.3.18泡池子泡到发晕,又找了几个厂(携程、华为和OPPO)投了一下晚上收到PDD的约面邮件,定到了3.212026.03.14美团笔试代码题AC了两道,后面两道骗了点分。当年在队里负责的就是图论部分,时隔数年码力下降的不忍直视,令人感叹。2026.03.13投了米哈游和快手2026.03.10投了企鹅2026.03.09上海AI&nbsp;lab第一次面试,面试官人超级nice,可能因为比较偏研究类型?前面一直在聊我的三篇论文(但是指出了我其中一篇有点缺陷&gt;-&lt;,得优化一下包装了)。最后出了一个简单的代码题,我很确信自己之前写过,一紧张忘完了,真尬住了。投了蚂蚁2026.03.07投了京东2026.03.06捣鼓了一下各种常见的手撕,像attention之类的复习了自己之前的科研项目投了美团、百度2026.03.05八股看了大半了(或者说八股是看不完的,又找了一些新的资料)投了PDD、滴滴2026.03.04刷完力扣hot&nbsp;100,开始准备了一些八股(刚看完Transformer和损失函数什么的)。投了字节暑期、小红书和上海AI&nbsp;Lab的日常。上海AI&nbsp;Lab约面到了3.9,字节约面到了3.25。
点赞 评论 收藏
分享
评论
点赞
43
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务