网易 8.8 笔试 3.1AC -- java岗

越笔试越感觉自己菜

1.素数个数 AC

大概就是给个数组,每个数字都可以无限拆分,问数组最多能拆出多少个素数

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        long ans = 0;
        int n = sc.nextInt();
        for(int i = 0; i < n; i++) ans += sc.nextInt() >> 1;
        System.out.print(ans);
    }
}

2.排列 AC

给定 n,再给了一个排列 T,扩充成排列 S(数字 1 - n 各使用一次)。问最小字典序的S

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        boolean[] vis = new boolean[n + 1];
        Queue<Integer> q = new LinkedList();
        for(int i = 0; i < m; i++){
            int num = sc.nextInt();
            vis[num] = true;
            q.offer(num);
        }
        StringBuilder ans =new StringBuilder();
        for(int i = 1; i <= n; i++) {
            if(vis[i]) continue;
            while(!q.isEmpty() && q.peek() < i) ans.append(q.poll() + " ");
            ans.append(i + " ");
        }
        while(!q.isEmpty()) ans.append(q.poll() + " ");
        System.out.print(ans.toString().substring(0, ans.length() - 1));
    }
}

3. 平分物品 AC

给了 n 个物品和它对应的价值。可以舍弃一部分物品,要两个人平分这些物品(数量可以不一样,价值总和要一样),问最少舍弃多少价值。
n <= 15,所以直接 dfs

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        while(T > 0) {
            T--;
            int n = sc.nextInt();
            int[] a = new int[n];
            for(int i = 0; i < n; i++) a[i] = sc.nextInt();
            //Arrays.sort(a); 这行可以不要,写的时候忘记删去了
            System.out.println(new Solution().value(n, a));
        }
    }
}

class Solution{
    int[] a;
    int n;
    int ans = Integer.MAX_VALUE;
    public int value(int n, int[] a) {
        this.a = a;
        this.n = n;
        dfs(n - 1, 0, 0, 0);
        return ans;
    }

    void dfs(int index, int p1, int p2, int value) {
        if(index == -1) {
            if(p1 == p2 && ans > value) ans = value;
            return;
        }
        dfs(index - 1, p1 + a[index], p2, value);
        dfs(index - 1, p1, p2 + a[index], value);
        dfs(index - 1, p1, p2, value + a[index]);
    }
}

4. 构建生成树 0.1AC

给了 n 个点, m 条边,(u,v,w),从 m 条边中选 n - 1 条边构建生成树,求最大权值 - 最小权值的最小值
用的 dfs,不知道哪里出问题了……有大佬 AC 的请指教一下。

#笔试题目##秋招##Java#
全部评论
小白求问,素数那个是什么原理呀
1 回复
分享
发布于 2020-08-08 23:05
联想
校招火热招聘中
官网直投
请问楼主第三天第11行代码,为什么需要排序?我觉得不用吧
点赞 回复
分享
发布于 2020-08-08 16:57
大佬,那个平分物品使用dfs是怎么个思想,我不大懂java的代码
点赞 回复
分享
发布于 2020-08-08 17:29
第二题不是要求字典序吗  如果输入是  10 2 10 2 楼主的代码是 1 3 4 5 6 7 8 9 10 2 不应该是1 10 2 3 4 5 6 7 8 9 吗 牛客有人发题拿了过来
点赞 回复
分享
发布于 2020-08-08 17:43
我也一样,前三题AC,最后一个0.1😪
点赞 回复
分享
发布于 2020-08-08 18:30
import java.util.ArrayList; import java.util.Scanner; public class Main {         public static void main(String[] args) {             Scanner in = new Scanner(System.in);             int n = in.nextInt();             int m = in.nextInt();             ArrayList<Integer> list = new ArrayList<>();             for(int i=0;i<m;i++){                 list.add(in.nextInt());             }             for(int i=0;i<m;i++){                 int temp = list.get(i);                 for(int j=1;j<temp;j++){                     if(!list.contains(j)&&temp>j){                         System.out.print(j+" ");                         list.add(j);                     }                 }                 System.out.print(temp+" ");             }             while(list.size()<n){                 int temp = list.size()+1;                 System.out.print(temp+" ");                 list.add(temp);             }         } } 我这有什么毛病没
点赞 回复
分享
发布于 2020-08-08 18:31
前3题都过了,第二题我用的是归并排序,枚举出剩余的元素,然后和原来的数组按大小归并,第三题想法和楼主一样,用的dfs。 就是第四题不知道怎么做,看看有没有大佬会做教一下。
点赞 回复
分享
发布于 2020-08-08 18:56
求问大佬,为啥第一题要用long呀,我用int只过了30%
点赞 回复
分享
发布于 2020-08-08 23:42
大佬刷了多少题,好强
点赞 回复
分享
发布于 2020-08-09 00:06
巅峰王者挂件已经暴露了楼主那隐藏的身份😯
点赞 回复
分享
发布于 2020-08-09 09:25
请问第三题可以说一下思路吗
点赞 回复
分享
发布于 2020-08-09 12:04
哈哈哈,和我一样最后一题莽了一个最小生成树过了0.1
点赞 回复
分享
发布于 2020-08-09 12:35
3.1AC还感觉自己菜,我留下了不学无术的泪水
点赞 回复
分享
发布于 2020-08-11 11:11

相关推荐

10 57 评论
分享
牛客网
牛客企业服务