京东笔试全ac太快乐了

京东客户端笔试算法全ac 感觉和后端的漂亮串差了2个leetcode hard难度啊
第一题 大小写切换直接三行api

第二题 二维矩阵直接s写法
1   2   3   4
8   7   6   5
9 10 11 12
16 15 14 13

第三题 长城 直接分奇数城墙和偶数城墙两个队列去看变成一个高度各需要多少次 再排除一下奇偶城墙高度一样的边界情况
import java.util.*;

public class 嘤嘤的长城 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        if (n == 1) {
            System.out.println(0);
        } else {
            Map<Integer, Integer> map1 = new TreeMap<>();
            Map<Integer, Integer> map2 = new TreeMap<>();
            int wall1 = 0, wall2 = 0;
            for (int i = 0; i < n; i++) {
                int wall = scanner.nextInt();
                if (i % 2 == 0) {
                    if (map1.containsKey(wall)) {
                        map1.put(wall, map1.get(wall) + 1);
                    } else {
                        map1.put(wall, 1);
                    }
                    wall1++;
                } else {
                    if (map2.containsKey(wall)) {
                        map2.put(wall, map2.get(wall) + 1);
                    } else {
                        map2.put(wall, 1);
                    }
                    wall2++;
                }
            }
            List<Map.Entry<Integer, Integer>> entries1 = new ArrayList<>(map1.entrySet());
            List<Map.Entry<Integer, Integer>> entries2 = new ArrayList<>(map2.entrySet());
            entries1.sort(((o1, o2) -> o2.getValue() - o1.getValue()));
            entries2.sort(((o1, o2) -> o2.getValue() - o1.getValue()));

            if (entries1.get(0).getKey() - entries2.get(0).getKey() != 0) {
                System.out.println(wall1 - entries1.get(0).getValue() + wall2 - entries2.get(0).getValue());
            } else {
                int first1, first2, next1 = 0, next2 = 0;
                first1 = wall1 - entries1.get(0).getValue();
                first2 = wall2 - entries2.get(0).getValue();
                if (entries1.size() > 1) {
                    next1 = wall1 - entries1.get(1).getValue();
                    next2 = wall2 - entries2.get(1).getValue();
                }
                System.out.println(Math.min(first1 + next2, first2 + next1));
            }
        }
    }
}
看了一会后端的漂亮串 看了时间限制2s应该是有什么公式之类的吧 想了一会没有思路 有大佬讲讲嘛
#校招##京东##京东笔试#
全部评论
一个小时做到最后一道算法题,两个hash表记录每个值出现的个数,用数组长度-去奇数表最大值-偶数表中最大值=变换的次数。其中如果最大出现次数两个表都相等,则取第二大出现的个数。最后通过64.29,没ac,我不理解😭
点赞 回复 分享
发布于 2022-08-27 22:22 湖北
人傻了,我也做的客户端笔试全AC,结果一看投递状态,连笔试都没到,处于简历筛选没通过,搞不懂,不是简历筛选过了才给我发笔试的吗。。。。
点赞 回复 分享
发布于 2022-08-29 00:20 四川
你怎么两个笔试都做了?
点赞 回复 分享
发布于 2022-08-27 22:22 吉林
s写法秒啊
点赞 回复 分享
发布于 2022-08-27 22:14 江苏

相关推荐

11-06 16:50
门头沟学院 Java
用微笑面对困难:word打字比赛二等奖的我,也要来凑合凑合
点赞 评论 收藏
分享
评论
5
7
分享

创作者周榜

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