0422网易雷火笔试

Q1

public class Solution {
    public int putGems (int[] price, int k) {
        // write code here
        int n = price.length;
        if (n <= k) return 0;
        int[] values = new int[n - 1]; //  // 枚举n-1个分裂点,每个分裂点包含其左右两个值的和
        for (int i = 1; i < n; i++) values[i - 1] = price[i] + price[i - 1];
        Arrays.sort(values);
        int ans1 = 0, ans2 = 0;
        for (int i = 0; i < k - 1; i++) ans1 += values[i];
        for (int i = n - 2; i > n - 1 - k; i--) ans2 += values[i];
        return ans2 - ans1;
    }
}

Q2

public class Solution {
    public int getEstTime (int[][] map, int a_x, int a_y, int b_x, int b_y) {
        // write code here
        int m = map.length, n = map[0].length;
        boolean[][] vis = new boolean[m][n];
        int[][] dirs = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
        Queue<int[]> queue = new ArrayDeque<>();
        queue.offer(new int[]{a_x, a_y});
        vis[a_x][a_y] = true;
        int ans = 0;
        while (!queue.isEmpty()) {
            for (int i = queue.size() - 1; i >= 0; i--) {
                int[] curr = queue.poll();
                if (curr[0] == b_x && curr[1] == b_y) return (ans & 1) == 0 ? (ans / 2) : (ans / 2 + 1);
                for (int[] dir : dirs) {
                    int x = curr[0] + dir[0], y = curr[1] + dir[1];
                    if (x < 0 || x >= m || y < 0 || y >= n || map[x][y] == 0 || vis[x][y]) continue;
                    queue.offer(new int[]{x, y});
                    vis[x][y] = true;
                }
            }
            ans++;
        }
        return -1;
    }
}

#网易##网易雷火##网易雷火笔试##网易笔试#
全部评论
为啥你们岗位的这么简单,开发岗的第二题我写了一百多行
1 回复 分享
发布于 2023-04-22 17:08 湖北
第一题枚举分裂点真的秒 我第一题暴力回溯过的
点赞 回复 分享
发布于 2023-04-23 21:29 美国
大佬,第一题的思路咋想到的呀
点赞 回复 分享
发布于 2023-04-22 17:16 天津
双机位咋搞
点赞 回复 分享
发布于 2023-04-22 16:58 湖北
简单的一批
点赞 回复 分享
发布于 2023-04-22 16:17 湖南
第二题为啥一直只能通过50%
点赞 回复 分享
发布于 2023-04-22 16:01 江苏
为啥跟我做的不一样啊
点赞 回复 分享
发布于 2023-04-22 16:00 河南

相关推荐

08-28 11:37
已编辑
华东师范大学 Java
Sigma777:本来想说师弟怎么把我这个老东西卷没了,仔细一看是师兄 简历不错,但是得准备好选型话术,比如我举个例子你为什么要用caffeine,一般我们的小项目不会有这么hot的key需要本地缓存,你要说明你是如何发现有这么hot的key连redis都兜不住的,引入后优化了多少时间,然后还有本地缓存大小设置为多少,这个大小能保证热点key不会因为太小而淘汰也不会因为太大影响服务吗,为什么不用guava,引入本地缓存同步问题怎么解决。 然后分库分表,为什么你觉得要分表,数据量多少,分多少张表几个库,分片键选择依据,你的所有查询能不能准确定位到某一张避免全库扫描,有没有数据倾斜问题就是分的每张表数据量差距特别大,你是一开始分库分表还是后期发现瓶颈才分,如果后期才分你如何把旧表的数据搬过去同时还能确保业务正常运行。 然后是消息队列,你说缓存高并发请求,却选择了吞吐量较小的rabbit,有什么原因吗,为什么不选Kafka。 然后你说分布式锁解决集群环境并发安全,也就是说你是集群部署的,请问是怎么部署的,docker还是k8s,部署几台,配置是多少,jvm参数设置是多少,有监控吗,线上遇到故障吗,怎么解决的,有做负载均衡吗,数据是怎么压测的等等。 zset缓存本月实时排行数据具体怎么做的,会有大key问题吗。 其他本小渣暂时想不到了,留给其他大神点评
点赞 评论 收藏
分享
评论
5
6
分享

创作者周榜

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