算法珠玑——一个最精简的题库
本书的目标读者是准备去硅谷找工作的码农,也适用于在国内找工作的码农,以及刚接触ACM算法竞赛的新手。
市场上讲解算法的书已经汗牛充栋,为什么还要写这本书呢?主要原因是我对目前市场上的大部分算法书都不太满意。 本书有如下特色:
背后有强大的AlgoHub支持。
本书的所有题目,都可以在 www.algohub.org(即将上线) 上在线判断代码。这样的一大好处是,读者可以边看书,边实现自己的代码,然后提交到网站上验证自己的想法是否正确。AlgoHub的使命是成为最好的算法学习和交流平台。AlgoHub囊括了 POJ, ZOJ, leetcode, HackerRank 等网站的经典题目(一些质量不高的题目则忽略),且 AlgoHub有非常简单的加题系统,用户不需要写一行代码即可自己添加题目,所以AlgoHub的题库还在飞速增长中。
每道题都有完整的代码。
市场上的大部分书,都会讲思路,但给出的代码都是片段,不是完整可编译的代码。本书每题都有完整的代码,且每个代码经过千锤百炼,保证可读性的前提下尽可能简短,方面读者在面试中能快速写出来。
每道题都有多种解法。
本书的宗旨是,用尽可能少的题目,覆盖尽可能多的算法。本书中的的每道题都有多种解法,每种解法不是简单的小改进,而是完全不同的思路,力求举一反三,让读者触类旁通。
本书支持多种主流编程语言。
目前支持 Java, C++, C#, Python, Ruby, JavaScript, Swift, Scala, Clojure, 将来还会支持更多编程语言。
在线阅读
https://www.gitbook.com/book/soulmachine/algorithm-essentials/
内容目录
- 介绍
- 线性表
- 数组
- Remove Duplicates from Sorted Array
- Remove Duplicates from Sorted Array II
- Longest Consecutive Sequence
- Two Sum
- 3Sum
- 3Sum Closest
- 4Sum
- Remove Element
- Move Zeroes
- Next Permutation
- Permutation Sequence
- Valid Sudoku
- Trapping Rain Water
- Rotate Image
- Plus One
- Climbing Stairs
- Set Matrix Zeroes
- Gas Station
- Candy
- Majority Element
- Rotate Array
- Contains Duplicate
- Contains Duplicate II
- Contains Duplicate III
- Product of Array Except Self
- Game of Life
- Increasing Triplet Subsequence
- 单链表
- Reverse Linked List
- Odd Even Linked List
- Add Two Numbers
- Reverse Linked List II
- Partition List
- Remove Duplicates from Sorted List
- Remove Duplicates from Sorted List II
- Rotate List
- Remove Nth Node From End of List
- Swap Nodes in Pairs
- Reverse Nodes in k-Group
- Copy List with Random Pointer
- Linked List Cycle
- Linked List Cycle II
- Reorder List
- LRU Cache
- Palindrome Linked List
- 数组
- 字符串
- Valid Palindrome
- Implement strStr()
- String to Integer (atoi)
- Add Binary
- Longest Palindromic Substring
- Regular Expression Matching
- Wildcard Matching
- Longest Common Prefix
- Valid Number
- Integer to Roman
- Roman to Integer
- Count and Say
- Anagrams
- Valid Anagram
- Simplify Path
- Length of Last Word
- Isomorphic Strings
- Word Pattern
- 栈和队列
- 二叉树
- 二叉树的遍历
- Binary Tree Preorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal II
- Binary Tree Right Side View
- Invert Binary Tree
- Binary Search Tree Iterator
- Binary Tree Zigzag Level Order Traversal
- Recover Binary Search Tree
- Same Tree
- Symmetric Tree
- Balanced Binary Tree
- Flatten Binary Tree to Linked List
- Populating Next Right Pointers in Each Node II
- 二叉树的构建
- 二叉查找树
- 二叉树的递归
- 线段树
- 二叉树的遍历
- 排序
- 查找
- 暴力枚举法
- 广度优先搜索
- 深度优先搜索
- 分治法
- 贪心法
- 动态规划
- Triangle
- Maximum Subarray
- Maximum Product Subarray
- Longest Increasing Subsequence
- Palindrome Partitioning II
- Maximal Rectangle
- Best Time to Buy and Sell Stock III
- Best Time to Buy and Sell Stock IV
- Best Time to Buy and Sell Stock with Cooldown
- Interleaving String
- Scramble String
- Minimum Path Sum
- Edit Distance
- Decode Ways
- Distinct Subsequences
- Word Break
- Word Break II
- Dungeon Game
- House Robber
- House Robber II
- House Robber III
- Range Sum Query - Immutable
- Range Sum Query 2D - Immutable
- 图
- 位操作
- 数论
- 模拟
- Java集合框架总结
Community
Github: https://www.github.com/soulmachine/algorithm-essentials
微博: @灵魂机器
小密圈:
License
Book License: CC BY-SA 3.0 License