大厂笔试ACM格式的输入如何读取多个数组?

大厂笔试ACM格式的输入如何读取多个数组

提示:20220410字节笔试题1的经验


文章目录

  • 大厂笔试ACM格式的输入如何读取多个数组
  • 为什么大厂笔试都是ACM格式的输入
  • 一、字节跳动的笔试是真的手撕,没有IDEA给你玩,只能网页上纯手写!!!
  • 总结


为什么大厂笔试都是ACM格式的输入

提示:你要清楚大厂究竟要啥员工:

这里不得不说互联网大厂的笔试题,一般3–5道题,字节经常是4道算法题
而第一道就是基本的编码能力考核题目,相对来说简单
第二道会考一点贪心技巧
第三道会考更复杂的数据结构与基础算法
第四道往往就是比较典型的动态规划

一道更比一道难,基本功有了过2道题目即可进入面试,证明你编码能力是有的
真的算法强劲的人,得拿下第3道乃至第4道
而拿下第4道的往往都是参加竞赛的人,比如ACM,极限编程,等等大佬,这些事高薪高手,是大厂希望通过笔试题纳入的人才。
本身大厂们出题的人都是ACM高手,所以自然题目的格式也就是ACM格式,所以一定要熟悉ACM格式的输入,不参加竞赛的话,平时都在那练习LeetCode,根本就不行,真到了面试临场,完全蒙逼了!!!

昨天20220410我参加字节的算法考试发现第一题是这样的输入(典型的ACM格式输入)
第一行T,代表即将输入T个矩阵
第二行开始就是T个矩阵,矩阵前有它们的行数和列数m和n
随后跟着m行矩阵内容,每一行都是n个数字
比如
2
4 4
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
1 2
0 1
T=2,就是俩矩阵的意思,但是字节后台在测试的时候,估计T到了10^2个测试案例
也就是说有很多很多很多矩阵,这个时候,你怎么读入,怎么处理完然后输出呢?你不可能一起就把数组全部读进一个变量存起来用吧!!!(昨天我蠢,就犯下这个错误)

而且,java中你用ArrayList来保存数组,是没办法转成静态数组arr的
所以你需要想办法解决这个问题

后来,我看到牛客网有大佬公开了自己的代码,我才明白,原来ACM格式的输入,一旦遇到很多个数组 ,那需要单独拿函数处理一个矩阵,在主函数中循环T次读取,每次读取一个矩阵,立马处理然后打印输出结果,下一次调用函数时,arr临时变量会被覆盖,故不会造成大量淤积,也不必把动态数组转化为静态数组,因为静态数组中的多个数组长短根本就不一样,无法转化。

像这样:

public static class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            int T = in.nextInt();
            while (T != 0){
                process();
                T--;//每次读取一个数组,循环处理T个即可,每个数组的处理方式一样
            }
        }
        
        public static void process(){
            //针对一个数组,如何处理,打印输出,不用等所有数组全部输入,最开始我在清华也遇到过这个问题!今天突破它
            
            
        }
    }

不妨设这样的下面图的矩阵,其实,先读m行字符串,然后将其转化为矩阵:
大厂笔试ACM格式的输入如何读取多个数组?_第1张图片

Scanner in = new Scanner(System.in);
//针对一个数组,如何处理,打印输出,不用等所有数组全部输入,最开始我在清华也遇到过这个问题!今天突破它
int[] mn = new int[2];
for (int i = 0; i < 2; i++) {
    //读取行列
    mn[i] = in.nextInt();
}
int m = mn[0];
int n = mn[1];

//m行数组
int[][] arr = new int[m][n];
 for (int i = 0; i < m; i++) {
     for (int j = 0; j < n; j++) {
         arr[i][j] = in.nextInt();
     }
 }
 //一绝

一、字节跳动的笔试是真的手撕,没有IDEA给你玩,只能网页上纯手写!!!

跟阿里,美团的笔试不一样
阿里美团等,他们可以使用idea写代码,然后copy到网页上提交测试

**字节跳动的笔试,禁止使用idea,你只能手撕,在网页上也没法调试,出了啥bug也只能看错误提示,具体出在哪里不知道!!**因此字节的算法笔试非常非常扎实,你玩不得半点虚滑,否则没法弄出来

idea写代码的好处是,你打函数,首字母出来以后,相关的函数,快捷键都能用,加速写代码的进程。
而网页没有提示,你自己都得背下来,连导入包你都要记清楚,否则代码报错,因此还是要踏实准备。


总结

提示:ACM格式的输入要熟悉,学过,见过,调整,否则自己慌得一比

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(大厂面试高频题之数据结构与算法,数据结构,java,算法,面试,leetcode)