
常用算法整理
文章平均质量分 81
lihongxun945
膜拜大牛
展开
-
常用算法整理:二分查找
基础二分查找二分查找是大家最常用的也是最简单的一种算法。二分查找在面试中是非常常见的一题,而且很多时候二分查找是时间效率最高的一种搜索方式。最简单的二分查找就是查找有序不重复数组中给定值的位置,基本模板如下:var search = function(nums, target) { var s = 0, e = nums.length - 1, m; while(s+1<e) {原创 2016-04-09 16:30:50 · 1010 阅读 · 0 评论 -
常用算法整理:动态规划上
什么是动态规划动态规划是应该不能叫 一种算法,而应该叫 一类算法 或者 说是 一种思想。它和 二分查找 这种算法是不同的,二分查找我们可以用代码表示出来,并且解决所有问题的思路几乎都是一样的。而动态规划其实无法用代码表示出来,每一种问题的解决方法可能用代码写出来都不一样,所以只看动态规划的定义是很难理解的,需要拿多个题目联系才能真正理解。动态规划的特点就是把一个大的问题分解为若干个小问题,并且这些小原创 2016-04-17 17:47:52 · 5941 阅读 · 0 评论 -
常用算法整理:二叉树
DFS - 二叉树的先序,中序和后续遍历先序遍历https://leetcode.com/problems/binary-tree-preorder-traversal/ 递归解法:var preorderTraversal = function(root) { if(!root) return []; return [root.val].concat(preorderTraver原创 2016-05-03 20:16:44 · 2247 阅读 · 0 评论 -
常用算法整理:动态规划中篇
上一章讲了动态对话的一些 Easy 和 Medium 难度的题,如果会做这些题目,远远谈不上掌握了动态规划,最多只能算“略懂皮毛”。这里我们挑几个更复杂的动规题目,全部是 Hard 难度的题,并且全部都是双序列问题,能把这些题目做到 bug free 才算是 基本掌握了动态规划。第一题题目地址:https://leetcode.com/problems/edit-distance/ 大意就是对一个原创 2016-04-20 18:35:26 · 718 阅读 · 0 评论 -
常用算法整理:链表相关
链表的考点链表很多时候都是考察基本功,因为链表题大部分都不是很复杂,主要是对指针的操作,当然也有难的。 简单的题目包括 删除/插入节点、翻转、去重、排序等,难度高一些的题目依然是这些,不过会有一些条件,比如多个链表或者局部操作。对链表题的两个技巧: - 如果不确定最终结果的head,比如对两个链表进行排序,那么新建一个 dummy node。 - 可以通过快慢指针的方式取中间节点入门题:第一题原创 2016-04-24 15:54:24 · 3777 阅读 · 1 评论