奇安信8.1 Java 笔试

选择
构建最小堆时间复杂度
不是链路层的功能
Java单继承
值传递和指针传递
内核锁
删除视图SQL
CPU调度高级、中级、低级
IPV6
稳定排序的含义
索引作用
自增运算符
符号链接
视图作用
不稳定的排序
二叉树排序
((x>4)?99.9:9) 隐式类型转换
出入栈
nlogn 的排序
C类网络地址
虚存只受什么限制

算法1 完全背包问题 就是转换成了物资

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // 总预算
        int t = input.nextInt();
        // 物资总数
        int n = input.nextInt();
        // 每个物品的价格
        int[] prices = new int[n];
        // 每个物品的价值
        int[] values = new int[n];
        for (int i = 0; i < n; i++) {
            prices[i] = input.nextInt();
            values[i] = input.nextInt();
        }

        // 预算为 t 时的最大价值
        int[] dp = new int[t + 1];

        for (int i = 0; i < n; i++) {
            for (int j = prices[i]; j < t + 1; j++) {
                dp[j] = Math.max(dp[j], dp[j - prices[i]] + values[i]);
            }
        }

        // 输出结果
        System.out.println(dp[t]);
    }
}

算法2 考查全排列

import java.util.*;

public class Solution {
    // 保存所有组合的数字
    private List<Integer> list = new ArrayList<>();

    public static void main(String[] args) {
        int x = 4;
        System.out.println(" " + ((x>4)?99.9:9));
    }

    public int reletive_7(int[] digit) {
        // write code here
        backtrack(digit, 0, digit.length - 1);
        int count = 0;
        for (int number : list) {
            if (number % 7 == 0) {
                count++;
            }
        }
        return count;
    }

    // 回溯法
    private void backtrack(int[] digit, int m, int n) {
        // 到达末尾
        if (m == n) {
            // 将数组拼接成数字,添加到结果集
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i <= n; i++) {
                sb.append(digit[i]);
            }
            list.add(Integer.parseInt(sb.toString()));
        } else {
            for (int i = m; i <= n; i++) {
                // 交换数字位置
                swap(digit, m, i);
                backtrack(digit, m + 1, n);
                // 恢复数字位置
                swap(digit, m, i);
            }
        }
    }

    // 交换两位置数字
    private void swap(int[] digit, int i, int j) {
        int temp = digit[i];
        digit[i] = digit[j];
        digit[j] = temp;
    }
}
#笔试题目##奇安信#
全部评论
为啥我第二题全排列ac 0% public class Solution_2 {     int count = 0;     public int reletive_7 (int[] digit) {         // write code here         reletive_7_Core(digit, 0);         return count;     }     private void reletive_7_Core(int[] digit, int start) {         if (start >= digit.length){             String string = "";             for (int i : digit){                 string += i;             }             long i = Long.parseLong(string);             if (i % 7 == 0){                 count++;             }             return;         }         for (int i = start; i < digit.length; i++){             swap(digit, i, start);             reletive_7_Core(digit, start + 1);             swap(digit, i, start);         }     }     private void swap(int[] digit, int i, int j) {         int temp = digit[i];         digit[i] = digit[j];         digit[j] = temp;     } }
点赞 回复 分享
发布于 2020-08-01 18:25
太迅速了!
点赞 回复 分享
发布于 2020-08-01 17:16
算法2 main函数是我测试选择题答案 可忽视。。
点赞 回复 分享
发布于 2020-08-01 16:57

相关推荐

点赞 评论 收藏
分享
程序员牛肉:1.大头肯定是院校问题,这个没啥说的。 2.虽然有实习,但是实习的内容太水了,在公司待了七个月的时间,看起来就只做了jwt和接入redis。爬取新闻,数据导入。这几个需求值得你做七个月吗?这不就是三四个月的工作量吗?我要是面试官的话真心会认为你能力不太行。所以既然有实习了,一定要好好写,像是Swagger这种东西是真没必要写上去,就拉一个包的事情。 3.我个人觉得话,在校生不要把自己当社招看,除非你的项目是特别牛逼,特别有名的含金量,否则不要写这种密密麻麻的一串子工作职责。你的项目只有一个作用,就是供面试官从中来抽取八股对你进行拷打。 但是你现在这个看不来什么技术点,可以改一下,详细表述一下你用什么技术实现了什么功能,在实现这个功能的过程中,你解决了什么难题。
点赞 评论 收藏
分享
评论
4
20
分享

创作者周榜

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