资源 | 从算法到数据结构,百道面试问题实现答案集合

选自GitHub

作者:Sherali Obidov

机器之心编译

参与:李亚洲、微胖、蒋思源

该资源是算法、数据结构以及面试问题解决方案的集合,里面的 repository 包含了我对常见算法问题的解答以及数据结构的实现(用 Java)。该资源集合处于持续更新中。

项目地址:https://github.com/sherxon/AlgoDS

目前为止,该资源集合提供了算法、数据结构以及 200 道面试题的答案。

问题

问题被分成了三个等级:

  • 简单问题:http://suo.im/262F7q
  • 中等问题:http://suo.im/11JBcd
  • 困难问题:http://suo.im/3pTT1R

问题方向

针对以下不同面试问题,各自的链接中都给出了解决方案。

阵列(Arrays)

  1. 旋转阵列(Rotate Array):http://suo.im/2Z3CMz
  2. Contains Duplicate:http://suo.im/2E9xnW
  3. 发现峰值元素:http://suo.im/4gQO3k
  4. 最大化子阵列(Maximum Subarray):http://suo.im/N0TXd
  5. 阵列中第 k 最大的元素(Kth Largest Element in an Array):http://suo.im/2P7aIi
  6. 搜索阵列中的所有 Duplicates:http://suo.im/2wQwpw
  7. 最长增长子序列(Longest Increasing Subsequence):http://suo.im/PvJyK
  8. 旋转图像、矩阵(Rotate Image, matrix):http://suo.im/3BGG1x
  9. 搅乱阵列(Shuffle an Array):http://suo.im/3V5MBe
  10. 在旋转阵列中搜索最小值:http://suo.im/2xtLa0
  11. 在旋转阵列中搜索:http://suo.im/1Ued08

链表(linked list)

  1. 单链表实现:http://suo.im/2n3Kzr
  2. 双向链表实现(Doubly Linked List):http://suo.im/1y98CP
  3. 删除链表中的结点:http://suo.im/41ZByL
  4. 回文链表(Palindrome Linked List):http://suo.im/3OWugt
  5. 反向链表(Reverse Linked List):http://suo.im/OxjXQ
  6. 两个链表的交集点(Intersection of Two Linked Lists):http://suo.im/36rPzZ
  7. 链表循环:http://suo.im/gANC2
  8. 从表的底部一处 Nth 节点:http://suo.im/4D3RNj
  9. 合并分类链表(Merge Sort List):http://suo.im/4jAMx3
  10. 发现链表循环:http://suo.im/2UFfZI
  11. 合并 k 分类列表:http://suo.im/4uWyyt
  12. 其他有关列表的问题:http://suo.im/4TyiJ

二叉树(Binary Tree)

  1. 二叉树的层次遍历(Binary Tree Level Order Traversal):http://suo.im/1DRKTK
  2. 左叶节点求和(Sum of Left Leaves):http://suo.im/nZnDk
  3. 二叉树转置(Invert Binary Tree): http://suo.im/27dXUu
  4. 二叉搜索树迭代器(Binary Search Tree Iterator):http://suo.im/4EgmWR
  5. 二叉树后序遍历(Binary Tree Postorder Traversal):http://suo.im/2I6r5S
  6. 二叉树前序遍历(Binary Tree Preorder Traversal):http://suo.im/1AF5J0
  7. 平面化二叉树为链表(Flatten Binary Tree to Linked List):http://suo.im/46kRsP
  8. 对称树(Symmetric Tree):http://suo.im/BnxLJ
  9. 二叉树中序遍历(Binary Tree Inorder Traversal):http://suo.im/snOMr
  10. 相似树(Same Tree):http://suo.im/1OCC7W
  11. 二叉树最大深度(Maximum Depth of Binary Tree):http://suo.im/2KinyW
  12. 平衡二叉树(Balanced Binary Tree):http://suo.im/3goksD
  13. 二叉树最小深度(Minimum Depth of Binary Tree):http://suo.im/2f53cs
  14. 平衡二叉搜索树排序列表(Sorted List to Balanced Binary Search Tree):http://suo.im/2D1MAo
  15. 验证二叉搜索树(Validate Binary Search Tree):http://suo.im/1lkBnt
  16. 平衡搜索树排序列表(Sorted List to Balanced BST):http://suo.im/2Qr9IL
  17. 平衡搜索树第 k 最小元素(Kth Smallest Element in a BST):http://suo.im/4mwq7K
  18. 二叉树的之字形层序遍历(Binary Tree Zigzag Level Order Traversal):http://suo.im/3NCvZW
  19. 平衡搜索树的结点删除(Delete Node in a BST):http://suo.im/1cXcP3
  20. 平衡树的最小公共祖先(Lowest Common Ancestor of BST):http://suo.im/MBljD
  21. 二叉树的左视图(Binary Tree Left Side View):http://suo.im/1hzBvx
  22. 二叉树的右视图(Binary Tree Right Side View):http://suo.im/2Invga
  23. 平衡搜索树的众数(Mode in BST):http://suo.im/3Jyrn2
  24. 最高频率子树和(Most Frequent Subtree Sum):http://suo.im/35LlcZ
  25. 搜寻每行最大元素(Find Largest Element in Each Row):http://suo.im/32twya

其他树型问题:http://suo.im/4TyiJ

数学

  1. 整数拆分(Integer Break):http://suo.im/lJU8r
  2. 逆位(Reverse Bits):http://suo.im/2E075a
  3. 回文数:(Palindrome Number):http://suo.im/3pkhnt
  4. 幂(Math.pow):http://suo.im/1Wr3E9
  5. 壶和水的问题(Jug and Water Problem):http://suo.im/1gWPQG
  6. 爱拉托逊新筛法(Sieve of Eratosthenes):http://suo.im/Pi0G7
  7. 费马素数(Fermat's primality):http://suo.im/2HZFT3
  8. 评估逆波兰式表示法(Evaluate Reverse Polish Notation):http://suo.im/jIGg6

堆栈&队列(Stack & Queue)

  1. 最小堆栈:http://suo.im/4FiVlB
  2. 最小队列:http://suo.im/3KEtsq
  3. 使用队列实现堆栈:http://suo.im/D5r2s
  4. 使用堆栈实现队列:http://suo.im/171IwF

动态编程(Dynamic Programming)

  1. 斐波那契数列:http://suo.im/1zjJhk
  2. 词内换行(word break):http://suo.im/3BIxnZ
  3. 子集和:http://suo.im/abSSP
  4. 0/1 渐缩问题:http://suo.im/1gVbIL
  5. 最短回文(KMP):http://suo.im/362qXW

MISC

  1. 并查:http://suo.im/24ZJmj
  2. 排列:http://suo.im/2NZx1s
  3. 子集:http://suo.im/PgGSw

算法方向

排序与搜索(Sorting And Searching)

  1. 上推排序:http://suo.im/2ofoaz
  2. 插入排序:http://suo.im/2unWJM
  3. 选择排序:http://suo.im/2Sqldb
  4. 计算排序:http://suo.im/ZsIt7
  5. 二叉搜索,上下界:http://suo.im/10C1jM
  6. 归并排序:http://suo.im/1iBDRS
  7. 快速排序:http://suo.im/1ZV7sc

图(Graphs)

  1. 宽度优先搜索(BFS):http://suo.im/2GhGd8
  2. 深度优先搜索(DFS):http://suo.im/1xuHah
  3. Prim 最小生成树(MST):http://suo.im/34Ignu
  4. KrusKal 最小生成树(MST):无
  5. 拓扑排序:http://suo.im/2KxOO
  6. 最短路径的戴克斯特拉算法(Dijsktra):http://suo.im/3uv4kJ
  7. 最短路径的 Bellman-Ford 算法:http://suo.im/2HgD4k
  8. 启发式路径搜索(Heuristic Path Finding):http://suo.im/2pQoF6
  9. 二分图:http://suo.im/29I5J1

字符串(String)

  1. Rabin Karp 序列搜索:http://suo.im/3dUjZM
  2. Ransom Note:http://suo.im/2fIVZc
  3. 逆字符串(Reverse String):http://suo.im/355a41
  4. 最长公共前缀(Longest Common Prefix):http://suo.im/1gt97D
  5. Is 易位构词(Anagram):http://suo.im/3BWyAQ
  6. Needle and Haystack:http://suo.im/lXoT4
  7. 词内换行(word break):http://suo.im/3BIxnZ

数据结构

树(Trees)

  1. 二叉搜索树(递归):http://suo.im/2I4nfe
  2. 二叉搜索树(迭代):http://suo.im/1M2Q6Z
  3. AVL 树:http://suo.im/151lYW
  4. Trie(Prefix 树):http://suo.im/2evIeJ

本文为机器之心编译,转载请联系本公众号获得授权。

本文分享自微信公众号 - 机器之心(almosthuman2014)

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

原始发表时间:2017-04-09

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器人网

日媒:在人工智能研究上,中美将日本远抛在身后

《日本经济新闻》12月12日报道称,在全球范围竞争日趋激化的人工智能(AI)研究领域,美国和中国这2强的存在感正在加强。日本文部科学省下属的科学技术和学术政策研...

27830
来自专栏机器人网

当前流行的15个机器学习框架

作者:Devendra Desale   摘要: 不管你是一个研究人员,还是开发者,亦或是管理者,想要使用机器学习,需要使用正确的工具来实现。本文介绍了当前流行...

38960
来自专栏PPV课数据科学社区

聚类分析:k-means和层次聚类

尽管我个人非常不喜欢人们被划分圈子,因为这样就有了歧视、偏见、排挤和矛盾,但“物以类聚,人以群分”确实是一种客观的现实——这其中就蕴含着聚类分析的思想。 前面所...

52770
来自专栏机器人网

最流行的机器学习R语言软件包大PK

The Data Incubator 中,有着最新的数据科学(data science)课程。其中大部分的课程都是基于企业和政府合作伙伴的需求而设立的。现在他们...

53160
来自专栏机器人网

6张机器学习备忘单,要不要挂到墙上(附网盘资源)

“小弟,看你的骨骼精奇,是万中无一的练武奇才,维护世界和平就靠你了。我这儿有本秘笈,我看与你有缘,就十块钱卖给你了。” ? 上周,我看到一些非常好的机器学习备...

32870
来自专栏PPV课数据科学社区

一文看懂自然语言处理(NLP)的深度学习发展史和待解难题

自然语言处理(NLP)是指机器理解并解释人类写作与说话方式的能力。近年来,深度学习技术在自然语言处理方面的研究和应用也取得了显著的成果。 技术博客Sigmoid...

53360
来自专栏数据猿

【案例】国信证券——人工智能在量化投资中的应用

数据猿导读 量化金融交易和金融大数据可谓是天作之合——巨量的、多种类相关的、实时高速的、包含丰富显性和隐性价值的数据,给传统意义上纯数字的量化交易带来了深层次的...

47960
来自专栏PPV课数据科学社区

人人都能读懂的无监督学习:什么是聚类和降维?

可以说机器学习已经成为了改变时代的大事,一时间似乎人人都应该懂一点机器学习。但机器学习涉及到的数学知识和编程能力往往让没有相关经验的人望而却步。YupTechn...

33140
来自专栏机器人网

机器学习岗位面试问题汇总之 深度学习

1.模式识别、机器学习、深度学习的区别与联系 模式识别:过去、程序/机器做智能的事、决策树等 机器学习:热点领域、给数据+学习数据 深度学习:前言领域、强...

28530
来自专栏机器人网

揭秘高考机器人AI-Maths是如何答题的?

11个黑色方盒子被装在一台一人多高的机柜里,身后连着密密麻麻的电线、网线,设备嗡嗡作响,信号灯不停闪烁,旁边两台空调正在抓紧工作。如果室温超过25摄氏度,这11...

29960

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励