算法
似曾相识-
http://blog.csdn.net/liaozhongping,不积跬步无以至千里,不积小流无以成江海
展开
-
常用的排序算法的时间复杂度和空间复杂度
排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序 O(n2) O(n2) 稳定 O(1) 二叉树原创 2015-09-19 04:02:04 · 368 阅读 · 0 评论 -
C/C++ 笔试、面试题目大汇总
1.求下面函数的返回值( 微软) int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8 思路:将x转化为2进制,看含有的1的个数。 2. 什么是“引用”?申明和使用“引用”要注意哪些问题?转载 2015-09-19 04:00:01 · 447 阅读 · 0 评论 -
常用算法整理:二叉树
DFS - 二叉树的先序,中序和后续遍历 先序遍历 https://leetcode.com/problems/binary-tree-preorder-traversal/ 递归解法: var preorderTraversal = function(root) { if(!root) return []; return [root.val].concat(pr转载 2016-11-15 15:18:50 · 309 阅读 · 0 评论 -
常用算法整理:链表相关
链表的考点 链表很多时候都是考察基本功,因为链表题大部分都不是很复杂,主要是对指针的操作,当然也有难的。 简单的题目包括 删除/插入节点、翻转、去重、排序等,难度高一些的题目依然是这些,不过会有一些条件,比如多个链表或者局部操作。 对链表题的两个技巧: - 如果不确定最终结果的head,比如对两个链表进行排序,那么新建一个 dummy node。 - 可以通过快慢指针的方式转载 2016-11-15 15:20:10 · 330 阅读 · 0 评论 -
常用算法整理:动态规划中篇
上一章讲了动态对话的一些 Easy 和 Medium 难度的题,如果会做这些题目,远远谈不上掌握了动态规划,最多只能算“略懂皮毛”。 这里我们挑几个更复杂的动规题目,全部是 Hard 难度的题,并且全部都是双序列问题,能把这些题目做到 bug free 才算是 基本掌握了动态规划。 第一题 题目地址:https://leetcode.com/problems/edit-dista转载 2016-11-15 15:20:58 · 291 阅读 · 0 评论 -
常用算法整理:动态规划上
什么是动态规划 动态规划是应该不能叫 一种算法,而应该叫 一类算法 或者 说是 一种思想。它和 二分查找 这种算法是不同的,二分查找我们可以用代码表示出来,并且解决所有问题的思路几乎都是一样的。而动态规划其实无法用代码表示出来,每一种问题的解决方法可能用代码写出来都不一样,所以只看动态规划的定义是很难理解的,需要拿多个题目联系才能真正理解。 动态规划的特点就是把一个大的问题分解为若转载 2016-11-15 15:21:42 · 372 阅读 · 0 评论 -
常用算法整理:二分查找
基础二分查找 二分查找是大家最常用的也是最简单的一种算法。二分查找在面试中是非常常见的一题,而且很多时候二分查找是时间效率最高的一种搜索方式。 最简单的二分查找就是查找有序不重复数组中给定值的位置,基本模板如下: var search = function(nums, target) { var s = 0, e = nums.length - 1, m; whi转载 2016-11-15 15:22:23 · 431 阅读 · 0 评论 -
JS的十大经典算法排序
十大经典算法排序总结对比 一张图概括: 名词解释: n: 数据规模 k:“桶”的个数 In-place: 占用常数内存,不占用额外内存 Out-place: 占用额外内存 稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 冒泡排序须知: 作为最简单的排序算法之一,冒泡排序给我的感觉就像Aband转载 2017-05-26 10:48:57 · 2440 阅读 · 0 评论