相见恨晚!互联网公司最常见的面试算法题大整理(已收录200+题目)

直接上干货,先按照算法与数据结构知识点分类的题目汇总:

链表:LintCode 35 | LintCode 36 | LintCode 98 | LintCode 102 | LintCode 103 | LintCode 450 | LintCode 1609

二分法:LintCode 458 | LintCode 457 | LintCode 75 | LintCode 28 | LintCode 14

二分答案:LintCode 183 | LintCode 319 | LintCode 437 | LintCode 963

相向双指针:LintCode 6 | LintCode 32 | LintCode 56 | LintCode 57 | LintCode 58 | LintCode 328 | LintCode 363 | LintCode 406 | LintCode 521 | LintCode 539 | LintCode 547 | LintCode 1870

宽度优先搜索:LintCode 120 | LintCode 278 | LintCode 433 | LintCode 178 | LintCode 630 | LintCode 615 | LintCode 787

二叉树遍历:LintCode 66 | LintCode 67 | LintCode 68 | LintCode 69 | LintCode 72 | LintCode 73

二叉树&分治法:LintCode 596 | LintCode 468 | LintCode 597 | LintCode 628 | LintCode 854

二叉搜索树:LintCode 85 | LintCode 95 | LintCode 689 | LintCode 902 | LintCode 915

深度优先搜索:LintCode 33 | LintCode 169 | LintCode 425 | LintCode 634 | LintCode 652 | LintCode 802 | LintCode 1909

坐标型动态规划:LintCode 76 | LintCode 109 | LintCode 114 | LintCode 115 | LintCode 1702 | LintCode 1827 | LintCode 1861

背包型动态规划:LintCode 92 | LintCode 125 | LintCode 440 | LintCode 562 | LintCode 563 | LintCode 564 | LintCode 669 | LintCode 724 | LintCode 1800 | LintCode 1915

接下来是热门公司的面试真题:

华为:LintCode 1905 | LintCode 1835 | LintCode 1254 | LintCode 1870 | LintCode 1853

腾讯:LintCode 1173 | LintCode 282 | LintCode 165 | LintCode 100 | LintCode 56

字节:LintCode 454 | LintCode 485 | LintCode 478 | LintCode 466 | LintCode 463

阿里:LintCode 1168 | LintCode 491 | LintCode 265 | LintCode 165 | LintCode 111

美团:LintCode 1173 | LintCode 282 | LintCode 165 | LintCode 100 | LintCode 56

百度:LintCode 1443 | LintCode 1188 | LintCode 1033 | LintCode 464 | LintCode 216

快手:LintCode 1295 | LintCode 1166 | LintCode 1153 | LintCode 1146 | LintCode 56

拼多多:LintCode 366 | LintCode 1835 | LintCode 1526 | LintCode 1181 | LintCode 1133

网易:LintCode 595 | LintCode 487 | LintCode 891 | LintCode 1261 | LintCode 35

滴滴:LintCode 1173 | LintCode 282 | LintCode 165 | LintCode 100 | LintCode 56

微软:LintCode 213 | LintCode 860 | LintCode 107 | LintCode 50 | LintCode 919

Shopee:LintCode 1355 | LintCode 1311 | LintCode 213 | LintCode 167 | LintCode 427

百词斩:LintCode 2208 | LintCode 2200 | LintCode 2043 | LintCode 1901 | LintCode 1880

海康威视:LintCode 1790 | LintCode 1744 | LintCode 1592 | LintCode 1536 | LintCode 127

接下来,让我们回顾几个有意思的经典互联网公司的面试题目,热热身。

题目1:黑客入侵点定位

集团内部有一核心机密项目,共由150个代码模块按顺序串行执行组成(示例:模块1->模块2->…模块N…->模块149->模块150)。偶然一天,某一个模块突然被黑客入侵(当前模块也称入侵点)。因为内部已经有预防措施,现存两款从不同角度设计的反入侵检测程序,但同时也有一定检测限制: 1.输入:顺序代码段,必须以模块1开始(比如:模块1->模块2->…模块39) 2:输出:True-输入包含入侵点,False-输入不包含入侵点 3.每款检测程序可以运行多次:可多次返回False,但仅能返回一次True(由于入侵的对抗性存在,一旦输出True即报废,后续检测功能失效) 4.同一时刻只能有一款检测程序运行,每检测一次耗时10分钟 现在希望仅利用现有的两款反入侵检测程序,在最短的时间内确保可以快速定位入侵点。具体需要如何设计检测流程,时间是多久。

相似题:

LintCode-丢鸡蛋


题目2:外卖小哥的保温箱

众所周知,美团外卖的口号是:”美团外卖,送啥都快”。身着黄色工作服的骑手作为外卖业务中商家和客户的重要纽带,在工作中,以快速送餐突出业务能力;工作之余,他们会通过玩智力游戏消遣闲暇时光,以反应速度彰显智慧,每位骑手拿出装有货物的保温箱,参赛选手需在最短的时间内用最少的保温箱将货物装好。 我们把问题简单描述一下: 1 每个货物占用空间都一模一样 2 外卖小哥保温箱的最大容量是不一样的,每个保温箱由两个值描述: 保温箱的最大容量 bi ,当前已有货物个数 ai ,(ai<=bi) 3 货物转移的时候,不必一次性全部转移,每转移一件货物需要花费 1秒 的时间

输入描述: 第一行包含n个正整数(1<=n<=100)表示保温箱的数量 第二行有n个正整数a1,a2,…,an(1<=ai<=100) ai表示第i个保温箱的已有货物个数 第三行有n个正整数b1,b2,…,bn(1<=bi<=100),bi表示第i个保温箱的最大容量 显然,每一个ai<=bi    
输出描述: 输出为两个整数k和t, k表示能容纳所有货物的保温箱的最少个数,t表示将所有货物转移到这k个保温箱所花费的最少时间,单位为秒.  

样例:

输入例子1: 4 3 3 4 3 4 7 6 5    
输出例子1: 2 6  

相似题:

LintCode-最小调整代价

题目3:最长公共前缀

输入n个字符串(1<=n<=300,字符串总长度L不超过1000,只包含小写字母) 后面多次查询,每次查询输入两个数字x,y,输出第x个字符串和第y个字符串的最长公共前缀长度。(查询次数K不超过100) 输入描述: 第1行输入一个整数n,代表字符串数量; 第2~n+1行,每行一个字符串; 第n+2行开始,每行输入两个整数a和b,代表需要计算公共前缀的字符串编号。 输出描述: 每次查询输出一行一个整数,表示两个字符串的最长公共前缀的长度

输入例子1: 2 abc abe 1 2    
输出例子1: 2  

相似题:

LintCode-最长公共前缀

题目4:字符串排序

生活中经常有需要将多个字符串进行排序的需要,比如将美团点评的部分业务名称(外卖、打车、旅游、丽人、美食、结婚、旅游景点、教培、门票、酒店),用拼音表示之后按字母逆序排序。字母逆序指从z到a排序,比如对两个字符串排序时,先比较第一个字母按字母逆序排z在a的前面,当第一个字母一样时再比较第二个字母按字母逆序排,以此类推。特殊情况1)空字符串需排在最前面;2)若一个短字符串是另一个长字符串的前缀则短字符串排在前面。请自行实现代码进行排序,直接调用sort等排序方法将不得分且视为作弊。

输入描述: 输入为一行,由多个字符串以英文逗号拼接而成,最多不超过128个字符串且可能有重复。每个字符串由小写字母a-z组成,可以为空,最长不超过128个字符。    
输出描述: 输出一行,为排序之后的字符串,用逗号隔开   输入例子1: waimai,dache,lvyou,liren,meishi,jiehun,lvyoujingdian,jiaopei,menpiao,jiudian   输出例子1: waimai,menpiao,meishi,lvyou,lvyoujingdian,liren,jiudian,jiehun,jiaopei,dache  

题目5:工作安排

小美是团队的负责人,需要为团队制定工作的计划,以帮助团队产出最大的价值。 每周团队都会有两项候选的任务,其中一项为简单任务,一项为复杂任务,两项任务都能在一周内完成。第i周,团队完成简单任务的价值为li,完成复杂任务的价值为hi。由于复杂任务本身的技术难度较高,团队如果在第i周选择执行复杂任务的话,需要在i-1周不做任何任务专心准备。如果团队在第i周选择执行简单任务的话,不需要提前做任何准备。 现在小美的团队收到了未来N周的候选任务列表,请帮助小美确定每周的工作安排使得团队的工作价值最大。

输入描述: 第一行为N(0≤N≤1000) 接下来的N行表示第1到N周两项候选任务的价值,第i行的格式为:li hi,其中 0 < li < 10000, 0< hi < 10000。    
输出描述: 输出一个数字,表示小美团队在未来N周能产出的最大价值。  
输入例子1: 4 10 5 1 50 10 5 10 1    
输出例子1: 70  

可以确定的是,国内的算法题在难度上在easy-hard不等,而对于应试来说,基本上精刷100-200题就足矣,也不需要纠结于奇技淫巧和hard题的解法。

代码题主要考察的是面试者对编程语言的应用是否熟练,重点掌握其中蕴含的算法与数据结构知识点。

关于如何通过刷题掌握算法与数据结构,LintCode上有很详细的分类题目合集,感兴趣的话直接刷就完事儿啦!免费!!!

v2-0c3ade420555c439e4d4df98e4d24681_b.jpg

前方干货预警

LintCode还专门整理了2021春招高频题汇总,密码【gpt666】,欢迎来挑战!!!

pinglun区还有专属VIP赠送哦!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值