专栏首页新智元GitHub高星!互联网公司最常见的面试算法题大集合

GitHub高星!互联网公司最常见的面试算法题大集合


新智元报道

来源:Github

编辑:元子

【新智元导读】LeetCode是一个美国的在线编程网站,收集了各个大厂的笔试面试题,对找工作的毕业生和开发者来说,非常有价值。很多求职者都会在LeetCode刷上一遍,面试官也喜欢在上面挑选各类题目。

LeetCode是一个美国的在线编程网站,收集了各个大厂的笔试面试题,对找工作的毕业生和开发者来说,非常有价值。不过LeetCode上面的题目很多都是考察应聘者对基础知识的应用,适合进行练习编程基础或者准备面试。

很多求职者都会在LeetCode刷上一遍,面试官也喜欢在上面挑选各类题目。今天新智元给大家推荐的这个GitHub项目,是Repo主自己刷题的心路历程,并给出了解题参考。该项目目前分为四个部分:

  1. 第一个部分是 leetcode 经典题目的解析,包括思路,关键点和具体的代码实现
  2. 第二部分是对于数据结构与算法的总结
  3. 第三部分是 anki 卡片, 将 leetcode 题目按照一定的方式记录在 anki 中,方便大家记忆
  4. 第四部分是计划, 这里会记录将来要加入到以上三个部分内容

只有熟练掌握基础的数据结构与算法,才能对复杂问题迎刃有余。

食用指南

最近添加的部分, 前面会有 ? 标注;最近更新的部分,前面会有 ? 标注;将来会在这里更新anki卡片。

leetcode官方账号在知乎上给出的一个《互联网公司最常见的面试算法题有哪些?》的答案,原文地址:

https://www.zhihu.com/question/24964987/answer/586425979

一张互联网公司面试中经常考察的问题类型总结的思维导图,我们可以结合图片中的信息分析一下。

其中算法,主要是以下几种:

  • 基础技巧:分治、二分、贪心
  • 排序算法:快速排序、归并排序、计数排序
  • 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等
  • 图论:最短路径、最小生成树
  • 动态规划:背包问题、最长子序列

数据结构,主要有如下几种:

  • 数组与链表:单 / 双向链表
  • 栈与队列
  • 哈希表
  • 堆:最大堆 / 最小堆
  • 树与图:最近公共祖先、并查集
  • 字符串:前缀树(字典树) / 后缀树

精彩预告

42.trapping-rain-water-1(雨水收集问题):

浏览器中的栈:

回溯法解题:

875. koko-eating-bananas:

传送门

leetcode 经典题目的解析

简单难度

? 20. Valid Parentheses:

https://github.com/azl397985856/leetcode/blob/master/problems/20.validParentheses.md

26.remove-duplicates-from-sorted-array:

https://github.com/azl397985856/leetcode/blob/master/problems/26.remove-duplicates-from-sorted-array.md

? 88.merge-sorted-array:

https://github.com/azl397985856/leetcode/blob/master/problems/88.merge-sorted-array.md

136.single-number:

https://github.com/azl397985856/leetcode/blob/master/problems/136.single-number.md

167.two-sum-ii-input-array-is-sorted:

https://github.com/azl397985856/leetcode/blob/master/problems/167.two-sum-ii-input-array-is-sorted.md

? 169.majority-element:

https://github.com/azl397985856/leetcode/blob/master/problems/169.majority-element.md

190.reverse-bits:

https://github.com/azl397985856/leetcode/blob/master/problems/190.reverse-bits.md

191.number-of-1-bits:

https://github.com/azl397985856/leetcode/blob/master/problems/191.number-of-1-bits.md

203.remove-linked-list-elements:

https://github.com/azl397985856/leetcode/blob/master/problems/203.remove-linked-list-elements.md

206.reverse-linked-list:

https://github.com/azl397985856/leetcode/blob/master/problems/206.reverse-linked-list.md

219.contains-duplicate-ii:

https://github.com/azl397985856/leetcode/blob/master/problems/219.contains-duplicate-ii.md

226.invert-binary-tree:

https://github.com/azl397985856/leetcode/blob/master/problems/226.invert-binary-tree.md

283.move-zeroes:

https://github.com/azl397985856/leetcode/blob/master/problems/283.move-zeroes.md

349.intersection-of-two-arrays:

https://github.com/azl397985856/leetcode/blob/master/problems/349.intersection-of-two-arrays.md

中等难度

2. Add Two Numbers:

https://github.com/azl397985856/leetcode/blob/master/problems/2.addTwoNumbers.md

3. Longest Substring Without Repeating Characters:

https://github.com/azl397985856/leetcode/blob/master/problems/3.longestSubstringWithoutRepeatingCharacters.md

11.container-with-most-water:

https://github.com/azl397985856/leetcode/blob/master/problems/11.container-with-most-water.md

19. Remove Nth Node From End of List:

https://github.com/azl397985856/leetcode/blob/master/problems/19.removeNthNodeFromEndofList.md

24. Swap Nodes In Pairs:

https://github.com/azl397985856/leetcode/blob/master/problems/24.swapNodesInPairs.md

? 39.combination-sum:

https://github.com/azl397985856/leetcode/blob/master/problems/39.combination-sum.md

? 40.combination-sum-ii:

https://github.com/azl397985856/leetcode/blob/master/problems/40.combination-sum-ii.md

? 46.permutations:

https://github.com/azl397985856/leetcode/blob/master/problems/46.permutations.md

? 47.permutations-ii:

https://github.com/azl397985856/leetcode/blob/master/problems/47.permutations-ii.md

? 55.jump-game:

https://github.com/azl397985856/leetcode/blob/master/problems/55.jump-game.md

? 62.unique-paths:

https://github.com/azl397985856/leetcode/blob/master/problems/62.unique-paths.md

75.sort-colors:

https://github.com/azl397985856/leetcode/blob/master/problems/75.sort-colors.md

? 78.subsets:

https://github.com/azl397985856/leetcode/blob/master/problems/78.subsets.md

86.partition-list:

https://github.com/azl397985856/leetcode/blob/master/problems/86.partition-list.md

? 90.subsets-ii:

https://github.com/azl397985856/leetcode/blob/master/problems/90.subsets-ii.md

92.reverse-linked-list-ii:

https://github.com/azl397985856/leetcode/blob/master/problems/92.reverse-linked-list-ii.md

94.binary-tree-inorder-traversal:

https://github.com/azl397985856/leetcode/blob/master/problems/94.binary-tree-inorder-traversal.md

102.binary-tree-level-order-traversal:

https://github.com/azl397985856/leetcode/blob/master/problems/102.binary-tree-level-order-traversal.md

103.binary-tree-zigzag-level-order-traversal:

https://github.com/azl397985856/leetcode/blob/master/problems/103.binary-tree-zigzag-level-order-traversal.md

139.word-break:

https://github.com/azl397985856/leetcode/blob/master/problems/139.word-breakmd

144.binary-tree-preorder-traversal:

https://github.com/azl397985856/leetcode/blob/master/problems/144.binary-tree-preorder-traversal.md

? 150.evaluate-reverse-polish-notation:

https://github.com/azl397985856/leetcode/blob/master/problems/150.evaluate-reverse-polish-notation.md

? 152.maximum-product-subarray:

https://github.com/azl397985856/leetcode/blob/master/problems/152.maximum-product-subarray.md

199.binary-tree-right-side-view:

https://github.com/azl397985856/leetcode/blob/master/problems/199.binary-tree-right-side-view.md

201.bitwise-and-of-numbers-range:

https://github.com/azl397985856/leetcode/blob/master/problems/201.bitwise-and-of-numbers-range.md

? 208.implement-trie-prefix-tree:

https://github.com/azl397985856/leetcode/blob/master/problems/208.implement-trie-prefix-tree.md

? 209.minimum-size-subarray-sum:

https://github.com/azl397985856/leetcode/blob/master/problems/209.minimum-size-subarray-sum.md

? 236.lowest-common-ancestor-of-a-binary-tree:

https://github.com/azl397985856/leetcode/blob/master/problems/236.lowest-common-ancestor-of-a-binary-tree.md

? 238.product-of-array-except-self:

https://github.com/azl397985856/leetcode/blob/master/problems/238.product-of-array-except-self.md

240.search-a-2-d-matrix-ii:

https://github.com/azl397985856/leetcode/blob/master/problems/240.search-a-2-d-matrix-ii.md

? 279.perfect-squares:

https://github.com/azl397985856/leetcode/blob/master/problems/279.perfect-squares.md

322.coin-change:

https://github.com/azl397985856/leetcode/blob/master/problems/322.coin-change.md

? 334.increasing-triplet-subsequence:

https://github.com/azl397985856/leetcode/blob/master/problems/334.increasing-triplet-subsequence.md

328.odd-even-linked-list:

https://github.com/azl397985856/leetcode/blob/master/problems/328.odd-even-linked-list.md

416.partition-equal-subset-sum:

https://github.com/azl397985856/leetcode/blob/master/problems/416.partition-equal-subset-sum.md

445.add-two-numbers-ii:

https://github.com/azl397985856/leetcode/blob/master/problems/445.add-two-numbers-ii.md

518.coin-change-2:

https://github.com/azl397985856/leetcode/blob/master/problems/518.coin-change-2.md

875.koko-eating-bananas:

https://github.com/azl397985856/leetcode/blob/master/problems/875.koko-eating-bananas.md

877.stone-game:

https://github.com/azl397985856/leetcode/blob/master/problems/877.stone-game.md

887.super-egg-drop:

https://github.com/azl397985856/leetcode/blob/master/problems/887.super-egg-drop.md

900.rle-iterator:

https://github.com/azl397985856/leetcode/blob/master/problems/900.rle-iterator.md

困难难度

? 23.merge-k-sorted-lists

https://github.com/azl397985856/leetcode/blob/master/problems/23.merge-k-sorted-lists.md

? 42.trapping-rain-water

https://github.com/azl397985856/leetcode/blob/master/problems/42.trapping-rain-water.md

? 128.longest-consecutive-sequence

https://github.com/azl397985856/leetcode/blob/master/problems/128.longest-consecutive-sequence.md

145.binary-tree-postorder-traversal

https://github.com/azl397985856/leetcode/blob/master/problems/145.binary-tree-postorder-traversal.md

146.lru-cache

https://github.com/azl397985856/leetcode/blob/master/problems/146.lru-cache.md

? 239.sliding-window-maximum

https://github.com/azl397985856/leetcode/blob/master/problems/239.sliding-window-maximum.md

? 295.find-median-from-data-stream.md

https://github.com/azl397985856/leetcode/blob/master/problems/295.find-median-from-data-stream.md

301.remove-invalid-parentheses

https://github.com/azl397985856/leetcode/blob/master/problems/301.remove-invalid-parentheses.md

数据结构与算法的总结

? 数据结构:

https://github.com/azl397985856/leetcode/blob/master/thinkings/basic-data-structure.md(草稿)

? 二叉树的遍历:

https://github.com/azl397985856/leetcode/blob/master/thinkings/binary-tree-traversal.md

动态规划:

https://github.com/azl397985856/leetcode/blob/master/thinkings/dynamic-programming.md

哈夫曼编码和游程编码:

https://github.com/azl397985856/leetcode/blob/master/thinkings/run-length-encode-and-huffman-encode.md

布隆过滤器:

https://github.com/azl397985856/leetcode/blob/master/thinkings/bloom-filter.md

anki 卡片

Anki主要分为两个部分:一部分是关键点到题目的映射,另一部分是题目到思路,关键点,代码的映射。

全部卡片都在:

https://github.com/azl397985856/leetcode/blob/master/assets/anki/leetcode.apkg

使用方法

anki - 文件 - 导入 - 下拉格式选择“打包的 anki集合”,然后选中你下载好的文件,确定即可。更多关于anki使用方法的请查看:

https://apps.ankiweb.net/

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 远程办公经验为0,如何将日常工作平滑过度到线上?

    我是一名创业者,我的公司(深圳市友浩达科技有限公司)在2018年8月8日开始运营,现在还属于微型公司。这个春节假期,我一直十分关注疫情动向,也非常关心其对公司带来的影响。

    TVP官方团队
    TAPD 敏捷项目管理腾讯乐享企业邮箱企业编程算法
  • 数据中台,概念炒作还是另有奇效? | TVP思享

    作者简介:史凯,花名凯哥,腾讯云最具价值专家TVP,ThoughtWorks数据智能业务总经理。投身于企业数字化转型工作近20年。2000年初,在IBM 研发企业级中间件,接着加入埃森哲,为大型企业提供信息化架构规划,设计,ERP,云平台,数据仓库构建等技术咨询实施服务,随后在EMC负责企业应用转型业务,为企业提供云迁移,应用现代化服务。现在专注于企业智能化转型领域,是数据驱动的数字化转型的行业布道者,数据中台的推广者,精益数据创新体系的创始人,2019年荣获全球Data IQ 100人的数据赋能者称号,创业邦卓越生态聚合赋能官TOP 5。2019年度数字化转型专家奖。打造了行业第一个数据创新的数字化转型卡牌和工作坊。创建了精益数据创新方法论体系构建数据驱动的智能企业,并在多个企业验证成功,正在向国内外推广。

    TVP官方团队
    大数据数据分析企业
  • 扩展 Kubernetes 之 CRI

    使用 cri-containerd 的调用流程更为简洁, 省去了上面的调用流程的 1,2 两步

    王磊-AI基础
    Kubernetes
  • 扩展 Kubernetes 之 Kubectl Plugin

    kubectl 功能非常强大, 常见的命令使用方式可以参考 kubectl --help,或者这篇文章

    王磊-AI基础
    Kubernetes
  • 多种登录方式定量性能测试方案

    最近接到到一个测试任务,某服务提供了两种登录方式:1、账号密码登录;2、手机号+验证码登录。要对这两种登录按照一定的比例进行压测。

    八音弦
    测试服务 WeTest
  • 线程安全类在性能测试中应用

    首先验证接口参数签名是否正确,然后加锁去判断订单信息和状态,处理用户增添VIP时间事务,成功之后释放锁。锁是针对用户和订单的分布式锁,使用方案是用的redis。

    八音弦
    安全编程算法
  • 使用CDN(jsdelivr) 优化博客访问速度

    PS: 此篇文章适用于 使用 Github pages 或者 coding pages 的朋友,其他博客也类似.

    IFONLY@CUIT
    CDNGitGitHub开源
  • 扩展 Kubernetes 之 CNI

    Network Configuration 是 CNI 输入参数中最重要当部分, 可以存储在磁盘上

    王磊-AI基础
    Kubernetes
  • 聚焦【技术应变力】云加社区沙龙online重磅上线!

    云加社区结合特殊时期热点,挑选备受关注的音视频流量暴增、线下业务快速转线上、紧急上线防疫IoT应用等话题,邀请众多业界专家,为大家提供连续十一天的干货分享。从视野、预判、应对等多角度,帮助大家全面提升「技术应变力」!

    腾小云
  • 京东购物小程序购物车性能优化实践

    它是小程序开发工具内置的一个可视化监控工具,能够在 OS 级别上实时记录系统资源的使用情况。

    WecTeam
    渲染JavaScripthttps网络安全缓存

扫码关注云+社区

领取腾讯云代金券