网易笔试到底有多难,看看这篇就知道

2024.6.20网易互娱游戏开发笔试题目 阅读详情

640?wx_fmt=jpeg

作者:帅地

来源:苦逼的码农

今天我要将的这道题是网易 8 月 3 号研发岗笔试的第一题,也是四道题中最简单的一道。这道题涉及到前缀和的应用,所以我想借这道题给大家讲一讲前缀和相关的一些知识,以后大家遇到这道题,就可以快速秒杀了。

问题描述

下面我描述下这道题,不过我给的描述是简化版的,实际上再做笔试题的时候,每道题的描述都巨长,一般都会根据实际场景来给出问题的,有些人可能阅读了十几分钟,然后不知道自己要干嘛,我这里给出最简化的版本。

有一个班级有 n 个人,给出 n 个元素,第 i 个元素代表 第 i 位同学的考试成绩,接下来进行 m 次询问,每次询问给出一个数值 t ,表示第 t 个同学,然后需要我们输出第 t 个同学的成绩超过班级百分之几的人,百分数 p 可以这样算:p = (不超过第 t 个同学分数的人数 ) / n * 100%。输出的时候保留到小数点后 6 位,并且需要四舍五入。

输入描述:第一行输入两个数 n 和 m,两个数以空格隔开,表示 n 个同学和 m 次询问。第二行输入 n 个数值 ni,表示每个同学的分数,第三行输入 m 个数值mi,表示每次询问是询问第几个同学。(注意,这里 2<=n,m<=100000,0<=ni<=150,1<=mi<=n)

输出描述:输出 m 行,每一行输出一个百分数 p,代表超过班级百分之几的人。

示例1:

输入 :

3  2

50 60 70

1  2

输出

33.333333%

66.666667%

第一题大致是这样,不过不是和原题完全一样哈,在输入和输出有小许区别,因为具体的输入输出我忘了。我这个描述说简化好像也挺长,不过原题就更加长了。

解答

那么这道题难吗?说实话不难,不过你可以先自己再脑子里想想怎么做比较好,或许在考场上 20 分钟你还真不一定做的出来。

有些人说,这还不简单,每次询问的时候,我都遍历一下所有人的成绩,这样的花时间复杂度是 O(n * m),显然,如果你这样做,那么是一定通不过的,一定会超时。一般暴力法能够通过 20% ~ 30% 的测试用力,如果一道题 20 分的话,能拿到 4~6 分。如果你实在没思路,那么暴力也是个不错的选择。

1、二分法

这道题我是用二分法做的,就是先对所有人的成绩进行排序,不过排序的时候我们需要开一个新的数组来存储。然后每次查询的时候可以通过二分查找进行匹配,由于用到了排序,需要花 O(nlogn) 的时间,m 次查询花的时间大致为 O(mlogn)。所以平均时间复杂度可以算是 O((m+n)logn)。这个时间复杂度通过所有测试用例,代码如下(没学过java的也能看懂):

public class Main {
    // 主函数,相当于c语言的main方法
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        int n = in.nextInt();
        // 存放成绩的数组
        int[] a = new int[n];
        // 存放排序过后的成绩
        int[] b = new int[n];
                // 输入 n 个人的成绩
        for(int i = 0; i &lt; n; i++){
            a[i] = in.nextInt();
            b[i] = a[i];
        }
        // 排序
        Arrays.sort(b);
        // 进行查询
        for(int j = 0; j &lt; m; j++){
            // 输入是要查询第几个同学
            int t = in.nextInt();
            // 把这个同学的分数拿出来
            int fen = a[t - 1];
            // 通过二分查找是排在第几位
            int sum = binarySearch(b, fen) - 1;
            double t = sum * 1.0 / n * 100;
            System.out.printf("%.6f\n", t);

        }
    }

    private static int binarySearch(int[] b, int fen){
        int l = 0;
        int r = b.length - 1;
        while(l &lt;= r){
            int mid = l + (r - l) / 2;
            if(b[mid] &gt; fen){
                r --;
            }else if(b[mid] &lt; fen){
                l++;
            }else{
                    // 由于存在分数相同的人,所以还要往后查找
                while(mid &lt; b.length &amp;&amp; b[mid] == fen){
                    mid++;
                }
                return mid;
            }
        }
        return 0;
    }
}

这里说明一下,输出的时候我没有输出"%"号哈。

前缀和

不过这道题更好的做法是采用前缀和来做。题设中每个同学的分数不超过 150,不小于 0,那么我们可以用一个数组 arr,然后让 arr[i] 表示分数不超过 i 的人数。通过这种方式,我们可以把时间复杂度控制在 O(n+m)。直接看代码吧,会更好理解(这里我就不写输入的代码了,用a[]存放成绩,m[]存放m次询问):

void f(int a[], int m[]){
    int n = a.length;
    int[] arr = new int[151];
    //先统计分数为 i 的有多少人
    for(int i = 0; i &lt; n; i++){
        arr[a[i]]++;
    }
    // 接着构造前缀和
    for(int i = 1; i &lt; 151; i++){
        arr[i] = arr[i] + arr[i-1];
    }
    // 进行 m 次询问
    for(int i = 0; i &lt; m.length; i++){
        // 取出成绩
        int score = a[m[i]-1];
        // 有多少人的成绩不超过 score的
        int sum = arr[score];
        System.out.printf("%.6f\n", sum * 1.0 / n * 100 );
    }
}

这种方法就叫做前缀和,用这种方法简单了很多。当然前缀和还有其他应用,例如:

如果给你一个数组 arr[],然后进行 m 次询问,每次询问输入两个数 i,j(i <= j)。要求你输出 arr[i] ~ arr[j] 这个区间的和。这个时候就可以使用前缀和的方式了。前缀和的构造也是很好构造的,例如 arr[] 变成前缀和的构造方式如下

for(int i = 1; i &lt; arr.length; i++){
   arr[i] = arr[i] + arr[i-1];
}

前缀和看起来还是挺简单的,不过在做题中,或许会有意想不到的作用,例如这次的笔试,所以今天给大家讲解一下。

最后我再问你一个和前缀和类似的问题,给你一串长度为n的数列a1,a2,a3……an,要求对a[i]~a[j]进行m次操作:

操作一:将a[i]~a[j]内的元素都加上P

操作二:将a[i]~a[j]内的元素都减去P

最后再给出一个询问求a[i]-a[j]内的元素之和。

这个你会怎么做呢?这个时候就涉及到差分的知识了,不过它和前缀和类似,感兴趣的可以研究一下。

最后

这里关于笔试题有几点建议,由于笔试题大多数都需要我们处理输入输出,而像 leetcode,剑指 offer 都是不需要我们处理这些的,所以会不熟悉,所以我建议可以去刷下往年的真题熟悉一下。

还有就是大部分都是可以直接暴力的,然后能拿 20%~30%的分数,想了十分钟还是没好的思路的,建议直接暴力。

还有就是有时候笔试是不准你用本地 IDE 的,所以我建议平时刷题的时候,直接再网页打代码,别跑到本地 IDE 打好再粘贴过来。

————  e n d ————

觉得文章不错的,欢迎点在看和转发,长按下图关注公众号 程序员乔戈里,收看更多精彩。

640?

网易有道笔试题 这几道题都是从网上找的不知道是哪一年的网易有道的笔试题,拿来做做,练练手。 1、打印如下形式的矩阵; n=5: 1       2       9       10      25 4       3       8       11      24 5       6       7       12      23 16      15      14      13      2 阅读详情

相关推荐

网易游戏策划笔试2019春招题解

网易游戏策划笔试2019春招题解 **15、**在阴阳师游戏中,御魂有6个位置。4件不同位置的御魂可以获得套装效果。假设在一个副本内,每次掉落一个御魂,掉落在6个位置中概率相同。(共6分) 1)要集齐一套4件套,平均需要通关()次副本? 2)如果要求4件套中,不能有2号位,平均需要通关() 次副本? 3)如果要求4件套中,必须有一件是2号位,平均需要通关()次副本? 解答: 1)获取一个御魂需要通关1次,在此基础上,通关一次副本获得一个不同的御魂的概率 为5/6,期望次数为6/5次,以此类推,获取

weixin_42680516的博客 3523

两种构造识别活前缀的DFA方法

1.基本概念 (1)前文回顾 在上一篇文章中(https://blog.youkuaiyun.com/qq_55168827/article/details/124329569)我们简单的介绍了我们该如何的去构造活前缀的DFA,但是只讲了概念,很多同学都还是一头雾水,在这篇文章中我将会详细的介绍如何的去构造活前缀的DFA。 (2)项目->NFA->DFA 大家可能看这个图有点懵,不知道是怎么来的,其实这个图是将项目转化为左边的NFA,再根据第二章NFA和DFA转化的知识转化为了左边的DFA.

qq_55168827的博客 9969

2018网易在线笔试(Java方向)

前几天收到了网易的邮件,告诉我通过了简历筛选,获得了在线笔试的资格~~~开森开森,嘿嘿,,传说中的网易只喜欢985的简历,我以为我肯定没机会参加笔试呢,,之后又听说去年网易有30000多人参加在线笔试,吓得我脑子里只想着“重在过程,重在体验”,嗯~ 今天下午心情超级差,被班里的事情弄得心烦意乱,一团怒火心中烧, 不过也因此头脑特别清醒,做题状态还不错,脑子没有变呆滞。 20道选择题...

爱玲姐姐的博客 3831

活前缀及构造活前缀的DFA

1.引入背景 上一讲我们讲了LR分析法和LR分析器的性质,我们知道了在规范规约过程中,栈内的符号串需要满足一定的条件,见下图: LR分析器的工作过程实际上就是逐步产生规范句型的活前缀。 如何保证栈内的符号串永远不会出现在句柄之后呢,于是我们引入了字的活前缀。 2.基本定义 (1)字的前缀 是指字的任意首部,如字ab的前缀有ε(ε是任何字的前缀),a ,ab ,abc。 (2)活前缀 可能大家看的有点懵,还是不理解什么叫做活前缀。其实通俗一点来讲,活前缀就是句柄的子集。...

qq_55168827的博客 1万+

2016网易游戏 游戏研发岗 在线笔试解题报告

2016网易游戏 游戏研发岗 在线笔试解题报告 A题 Amusing Digits B题 Best Compression Algorithms C题 Complicated Expression

简单易懂的现代魔法 3629

网易笔试题——算法岗

网易笔试题——算法岗。

FPGA/MATLAB学习教程/源码/项目合作开发 1042

前缀和的应用,从一道网易笔试题说起

作者:帅地来源:苦逼的码农8月3号参加了网易提前批的笔试,笔试时间 120 分钟,然后有 10 道选择题(20分), 4 道编程题(80分), 2 道主观题(20分)。可...

yeluoxiang的专栏 720

ctfshow 萌新22 (类似级客巅峰web4)

在之前ctfshow平台的萌新22,大家都认为是无解的,题目也介绍了"还能搞,阿呆表示将直播倒立放水"。但是在级客巅峰结束的那天晚上,群里的师傅介绍说,如果修改了php.ini里面的配置(register_argc_argv)可以做出来。最后是真的做出来了。 使用阿呆~~~? 下面是自己的思考,感谢Guoke师傅和ha1c9on师傅的帮助 一. 源代码 <?php if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_mat.

Firebasky的博客 4215

编译原理笔记16:自下而上语法分析(3)构造 DFA、DFA 对下一步分析的指导(有效项目)

编译原理

VengaZ的学习博客 2857

硬件工程师必备核心知识点

硬件设计是一项系统化工程活动,涉及元器件选型、电源设计、信号完整性、EMC和PCB工艺等多个环节

硬核科技 338

《华为项目管理之道》第1章笔记

performance indicator,KPI)纳入个人绩效承诺书,贯彻结果导向的理念,以向员工。客户需求是华为发展的原动力,为客户服务是华为存在的唯一理由。目经理‘用兵’,依靠市场机制‘调兵’”,打破了人员在功能部门的板结,实现了听得。为管理者选拔的必要条件,项目经理成为人人向往的岗位。《华为项目管理之道》,是新出的华为官方的项目管理书,整个书不错。伴随着项目型组织的建立,华为逐步形成了完备的项目管理流程和制度,从而将业务运。为此,通过改革,重新明确了项目经理承担的经营责任,并开始以项。

jackyrongvip的专栏 2127

网易笔试到底有多难,看完这篇文章你就能明白了

今天我要将的这道题是网易 8 月 3 号研发岗笔试的第一题,也是四道题中最简单的一道。这道题涉及到前缀和的应用,所以我想借这道题给大家讲一讲前缀和相关的一些知识,以后大家遇到这道题,就可以快速秒杀了。 问题描述 下面我描述下这道题,不过我给的描述是简化版的,实际上再做笔试题的时候,每道题的描述都巨长,一般都会根据实际场景来给出问题的,有些人可能阅读了十几分钟,然后不知道自己要干嘛,我这里给出最简化...

weixin_45560122的博客 782

NVIDIA DGX Spark (Ubuntu 24.04) 部署Isaac Sim与Isaac Lab:二进制安装与ROS2集成实战

本文详细介绍了在NVIDIA DGX Spark工作站(Ubuntu 24.04系统)上,通过预编译二进制包稳定部署Isaac Sim与Isaac Lab的完整实战流程。文章重点剖析了二进制安装相较于源码编译和pip安装的优势,有效规避了CUDA、PyTorch等关键组件的版本冲突陷阱,并逐步指导完成环境配置、Isaac Lab集成、Conda环境管理以及ROS2 Jazzy的集成,最终构建出完整的机器人仿真与强化学习开发平台。

kite3的博客 396

网易历届笔试面试题整理大全

整理了一下网易往届笔试面试题,希望对大家有帮助: 超级有用的面试题:Java常见面试题    常见算法面试题   数据库常见面试题  操作系统常见面试题   C/C++常见面试题  大数据常见面试   python常见面试 来源:网易笔试面试圈&gt;&gt; 1、2019网易实习生招聘编程题集合 2、2018网易校园招聘编程题真题集合 3、2018网易前端实习笔试题 4、2018网易...

wodwl的专栏 1万+

聊一聊固态电池和钠离子电池新技术

总之,固态电池是一种“安全又高效的未来电池”,它的好处非常明显,但目前还处于研发阶段,离普及还有一段距离。未来,这两种技术可能会与锂离子电池并存,分别满足不同的市场需求。我尝试用最通俗易懂的语言将复杂的技术讲给大家听。钠离子电池和锂离子电池的工作原理很相似,但它用的是。固态电池和钠离子电池是两种正在研发和推广的。,它们有潜力解决现有锂离子电池的部分缺点。,而不是锂(Li)。

weixin_33324696的博客 3333

COMSOL有限元仿真深度指南:为结构件添加预应变

一、什么是预应力和预应变? 我们知道,结构力学问题中,结构件在外载荷作用下产生变形响应以吸收外载荷做功带来的能量;而在结构内部,整体的受力和变形则是通过固体微元的应力与应变传递的。 对于线弹性材料来说,应力与应变的关系可以线性表达,也即 σ=Dεσ = Dεσ=Dε ;在该式中,无论固体微元的应变程度多大,弹性矩阵DDD都是一个不变的常值。而对于超弹性材料来说,应力与应变的关系则需要通过应变能密度函数WWW来表征(详细参加博客《COMSOL有限元仿真深度指南:超弹性模型有限元分析入门》)。 从上面我们也不难

忘了面孔的Batou 7170

网易2021批笔试题解

(4/4)AK 体验正常

nonameeee的博客 5418

【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止

转载请注明出处:http://blog.youkuaiyun.com/qq_26525215 本文源自【大学之旅_谙忆的博客】 在启动mysql服务时出现该错误: 本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。mysql 版本 5.7.14 系统 win 7后来经过一系列的百度,谷歌,总算是解决了。首先,你需要把原来的服务删除:mysqld --remove mysq

谙忆-陈浩翔 12万+

网易笔试之后的自我反省

网易笔试过后,心里空空的。下来也和同学们交流,可能大家以为我比较水,在我谈到写那个大数类的时候,直接否认了我的分段加法思想。虽然被否认,但是我却不能懈怠,更不能因此沮丧或者自我否定。我应该在质疑声中证明自己。我也可以,而且8月份为了拿到offer,我开始拼了!        首先说一下选择题吧,我的知识面有所扩展,但是mysql、linux方面的知识欠缺的比较多。设计模式我之前看过专栏:设计模式

yutianxin123的专栏 1826

SAP-ABAP:SAP HANA性能神器FDA:是极速查询的引擎,也是CPU过载的元凶

在SAP S/4HANA的世界里,有一个被ABAP开发者们既爱又怕的特性——Fast Data Access(FDA),它能将性能提升百倍,也能让CPU瞬间飙升。本文将带您全面解剖这一核心机制。

baidu_35680696的博客 849

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IT名企笔试题精选系列之——网易篇

IT名企笔试题精选系列之——网易篇 作为四大门户之一的网易公司,也是应届毕业生挤破脑袋想进入的企业之一。然而想进入名企不是一件容易的事情,需要经历残酷的优胜劣汰,冲破层层笔试面试的关卡。笔试作为第一关,大家应该做好充分准备。做历届笔试题是找寻企业应聘考试方向的重要参考依据。本文集盘点的网易笔试题都是从互联网资料大库中精选出来,希望对广大想进网易的网友有一定的帮助,绝对值得你下载收藏。

拟声的主扬在江湖 605

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

网易笔试题

网易笔试不难,但是给了我一个教训,所以记下来以留念。   时间:11月3日8:00(后来改到10:00)。   地点:西安交通大学教2南315教室   赶到考场时,离考试开始时间只差2分钟了,找了个座位坐下后没有任何的等待笔试就开始了。网易的笔试题目很有趣:   证明题:给出n个互不相同的分数数列a1/b1, a2/b2… an/bn ,证明(a1 + a2 + … + an)

草也的博客 5万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【笔试】 网易雷火校园招聘笔试编程题类型

动态规划:编辑距离、打家劫舍、最长回文子串等经典问题(需掌握状态转移方程优化)。字符串处理:加密解密、模式匹配、复杂模拟题(如文本编辑器)。图论与搜索:BFS/DFS在路径问题或状态模拟中的应用。数学与数论:质因数分解、欧拉函数、数位DP(如最小F(x)=φ(x)/x问题)。

hhw_hhw的博客 2430

NetEase网易 Java笔试题 树上摘樱桃

有一棵二叉树,树上的叶子节点定义为“樱桃”。现在需要找出树上有多少个满足如下子结构的“樱桃”串,即一串上刚好有两颗“樱桃”。 比如如下的一棵树,红框标示的有两个符合要求的结构,答案就是2 又比如下面的这颗树,没有任何符合要求的子结构,则答案是0 输入描述: 第一行两个正整数m, n,空格分开,分别代表总共有树上有多少个节点,和树上有多少条边,2<=m<=100, 1<=n<=100 下面有n行,每行为3个部分,用空格分割,第一个数字为某非叶子节点的id, 第二个为该边为lef

itigoitie的博客 386

网易笔试001(HR之声)

一、HR之声:技术笔试为何难过人文关 解剖网易笔试题 网易互动于2月启动了06年社会招聘计划,技术部热聘职位:高级程序员、系统治理员、数据库治理员、游戏测试工程师。从优快云人才论坛的讨论、以及网易招聘部门的反馈来看,在网易的技术笔试题中,有一部分人文类的题目,难倒了很多人。举几个例子:  笔试真题:  1、分别安排下列字(斩、泰、淡、蔼)到下文格言中的空白处(每处一字)  自处超

nanalin805的专栏 1179
上一篇: Spring【AOP模块】就这么简单
下一篇: 简历造假,你以为我不知道?
程序员乔戈里
博客等级 码龄8年 1057粉丝 220原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值