9.14 依图笔试面经 - 编程题 & 题解

alt

考试时间:2023-09-14(100 分钟)

考试平台: 牛客网

T1

牛牛正在买书,每本书都有名字和价格,牛牛想把书按照价格升序排序。

输入描述

第一行输入一个正整数 n,表示书的数量

后续每行都输入一个字符串 str 和一个正整 p表示书价格。

输出描述

把书名按照价格升序输出。

示例1

输入:
3
TheNowcoder 100
Abook 20
BBook 300

输出:
Abook
TheNowcoder
BBook

题解

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

// P1
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        TreeMap<Integer, String> map = new TreeMap<>();
        for (int i = 0; i < n; i++) {
            String bookName = in.next();
            Integer price = in.nextInt();
            map.put(price, bookName);
        }

        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println(entry.getValue());
        }
    }
}

T2

从前有一扇秘密大门,打开大门的口令记录在一个数组中,为了破解其中的奥秘,需要找出数组内重复次数第二多的小写字母及其出现的次数。

输入描述

输入一个任意长度的字符串数组

输出描述

输出数组内重复次数第二多的小写字母及其频次,输出形式为:字符-频次

示例

输入:
['abaabbbabbddddfew1','abbbAAwe123','45dipopg#$@']

输出:
a-5
输入:
['qwe','qwe','qwe']

输出:
ERROR

题解

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

// P2
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Map<Character, Integer> cntMap = new HashMap<>();
        while (in.hasNext()) {
            String next = in.next();
            for (char c : next.toCharArray()) {
                cntMap.put(c, cntMap.getOrDefault(c, 0) + 1);
            }
        }

        char c = '_';
        // max1 次数最多, max2 次数第二多
        int max1 = 0, max2 = 0;
        for (Map.Entry<Character, Integer> entry : cntMap.entrySet()) {
            int cnt = entry.getValue();
            if (cnt >= max1) {
                max2 = max1;
                max1 = cnt;
                c = entry.getKey();
            } else if (cnt > max2) {
                max2 = cnt;
            }
        }

        if (max1 != max2) {
            System.out.println(String.format("%c-%d", c, max1));
        } else {
            System.out.println("ERROR");
        }
    }
}

T3

小明是一个有强迫症的小孩,有一天他看到一个n”m的矩阵,但是强迫症让他失去理智,他想要删掉矩阵的一些列使得最终的矩阵每一行都是一个非递减序列。

换句话说,如果最终的矩第 i 行第 j 列为 a[i][j], 那么对于所有的i, j ( 1≤ i ≤ n, 1 ≤ j ≤ m-1) , a[i][j] ≤ a[i][j+1] 。

现在小明想知道他最少删除多少列能使得最终的矩阵每一行都是一个非递减序列。

输入描述

第1行: 输入两个正整数n,m,(1 ≤ n,m ≤300)。

第2~n+1行: 每行输入m个正整数,第i+1行第 j 个正整数,表示题目中的a[i][j],(1 ≤ a[i][j] ≤ 10^9)。

输出描

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

🔥笔试编程真题宝典💯 文章被收录于专栏

📕分享大厂机试真题深度剖析核心考点,助你速通面试。

全部评论
这真的是一个半小时内做出来的吗
点赞 回复 分享
发布于 2023-12-28 13:12 美国
楼主,现在是什么状态
点赞 回复 分享
发布于 2023-11-01 19:30 河北
第四题能a?
点赞 回复 分享
发布于 2023-09-21 01:00 浙江
前三道题加起来50多分,第四题0分,做完一直没消息,这些题跟一星期前笔试的一模一样
点赞 回复 分享
发布于 2023-09-16 17:43 安徽
大佬,太强了,我只会前俩模拟
点赞 回复 分享
发布于 2023-09-15 10:33 陕西

相关推荐

不愿透露姓名的神秘牛友
05-20 16:14
已编辑
不止遇到一次了,什么都不会,让提合并请求,问什么是合并请求。让gitlab.页面把测试截图附上,不知道截图要放在哪,那么大的编辑看不到吗让配开发机,问ip是什么东西……这都咋进来的啊,我们(我2023年毕业)那会儿没AI的时候面试都是直接linux,docker,k8s,git,结构与算法,计网。怎么才过去2年,实习生跟傻子一样,有些问题问的我难受,不会git&nbsp;commit,不会git&nbsp;pull,不会切换分支,直接要覆盖master....————而且态度非常敷衍,3天前给开个仓库权限,连本地都没有拉下来。让写一个小文档,都是说一句,写一句,说把目录加上,挺嗤之以鼻,最后还是把目录加上了😂😂任何文档和注释都是方便后来人的,现在的人真的很自负啊,打开github看看任何一个开源项目的文档和注释,都写的很详细。难道现在的同学在校期间不经常拉开源项目看源码学习吗?&nbsp;哪怕是一个swap函数,开源项目里都经常注释:1&nbsp;3&nbsp;5&nbsp;7&nbsp;9&nbsp;2&nbsp;4&nbsp;6&nbsp;8&nbsp;10^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rswap:{功能描述}{使用样例}————给我气笑了,没次问我有什么任务的时候,我都是说,优先你学校导师的项目,然后再做公司需求。然后给了两个需求,一个月内搞定就行,既然是agent开发,1.&nbsp;部署需要维护项目的开发环境2.阅读opencode/openclaude代码(我个人感觉龙虾的源码agent部分很常规,就一个channel+agent,还不如看claude泄露的代码和opencode)然后任务1搞了几周说因为环境问题,他申请到的远程开发机是linux,装的python2,项目是py3的,所以没搭建,我说你不行就用conda或docker把环境屏蔽了呢,没搭理我。任务2:看了很长时间代码,给我回了一句,opencode和openclaude是用go写的……我说你打开github看右下角那的语言是ts还是go……&nbsp;结果满脸懵的说ts是什么……我让看agent&nbsp;loop,哪怕全局搜索一下while(true),跳过去从头看到尾就大致清楚了,压根没看。————嘻嘻,我已经开始做社招简历了。
redf1sh:默认会git结果发现真不会,这种一看就是没做过项目的,真做过项目的至少会提交
点赞 评论 收藏
分享
评论
7
18
分享

创作者周榜

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