随笔分类 - [41]Algorithm算法
-
数组模拟实现邻接表
摘要:数组模拟实现邻接表图的边的表示方法,有很多。像邻接矩阵、边集数组、邻接表等。其中,第三者的时空复杂度应该是最优的。但是实现却需要比较麻烦的链表,但是我们也可以用数组来模拟链表,使编程的复杂度进一步降低。 这种算法:遍历所有的边的时间复杂度是O(M),M表示边的总数,空间复杂度也是O(M)。在最坏情况... 阅读全文
-
面经
摘要:yahoo面经 第二弹Step-BY-Step 2014-11-08 15:58 阅读:2 评论:0Yahoo 面经Step-BY-Step 2013-12-08 02:43 阅读:4 评论:0Amazon SED1 面经Step-BY-Step 2013-11-25 03:09 阅读:2 评论:0... 阅读全文
-
如何从数组中随机取出多个不重复的项
摘要:如何从数组中随机取出多个不重复的项1.问题如何随机取数组中的多个值?给定一个数组,需要从此数组中随机取出不重复的几项;2.应用举例从20个会员中,随机抽出5个做为幸运奖;对于这个应用,一个办法是可以在数据库层面解决,如(sql server):select top5* from (select to... 阅读全文
-
常用数据结构
摘要:常用数据结构1. 链表链表可以使用数组实现,也可以使用指针实现。用数组实现的链表的插入、删除操作需要O(N)的时间复杂度,很少使用。用指针实现的链表,插入删除操作可以O(1)时间完成。Code链表结点定义structNode{ElementTypeElement;Node*Next;};链表常用操作... 阅读全文
-
数据结构及算法
摘要:数据结构及算法败者树原理摘要: 2个子结点比较后的败者放入它们的父结点,而胜者送到它们父结点的父节点去再作比较,这才是败者树。b[0]放的是最终的胜者。阅读全文posted @2011-02-22 10:56怂QQ 阅读(1727) |评论 (0)编辑找出单向链表的倒数第m个元素摘要: 相对于双向链... 阅读全文
-
时间复杂度和空间复杂度详解
摘要:时间复杂度和空间复杂度详解算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的... 阅读全文
-
算法的时间复杂度和空间复杂度
摘要:算法的时间复杂度和空间复杂度常用的算法的时间复杂度和空间复杂度排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳定O(log2n)~O(n)选择排序O(n2)O(n2)稳定O(1)二叉树排序O(n2)O(n*log2n)... 阅读全文
-
各种排序算法汇总
摘要:各种排序算法汇总目录简介交换排序冒泡排序快速排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序归并排序基数排序总结简介排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部... 阅读全文
-
算法时间复杂度的计算
摘要:算法时间复杂度的计算基本的计算步骤时间复杂度的定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(... 阅读全文
-
LeetCode: Distinct Subsequences
摘要:LeetCode: Distinct SubsequencesDistinct SubsequencesGiven a stringSand a stringT, count the number of distinct subsequences ofTinS.A subsequence of a ... 阅读全文
-
数据结构与算法之排序
摘要:数据结构与算法之排序排序使我们实际开发中最常使用到的几个算法之一,按照如果按照排序过程中依据的原则对内部排序进行分类,则大致上可以分为插入排序、交换排序、选择排序、归并排序等排序方法。让我们首先看看插入排序的算法有哪些,以及他们的具体实现。插入排序的基本排序思想是:逐个考察每个待排序元素,将每一个新... 阅读全文
-
LeetCode
摘要:LeetCodeleetcode Word Search摘要: 给定一个board字符矩阵,可以从任意一个点开始经过上下左右的方式走,每个点只能走一次,如果存在一条路走过的字符等于给定的字符串,那么返回trueGiven a 2D board and a word, find if the word... 阅读全文
-
排序算法
摘要:排序算法1概述本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序、插入排序、归并排序、希尔排序、快速排序等。算法性能比较如下图所示:2选择排序选择排序的第一趟处理是从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第1个元素并将它定位在第一号存储位置... 阅读全文
-
排序算法的时空复杂度、稳定性分析
摘要:排序算法的时空复杂度、稳定性分析排序算法的时空复杂度、稳定性分析1.基本概念2.时空复杂度3.稳定性4.使用情况分析排序算法总结(C语言版)已介绍排序算法的基本思想和C语言实现,本文只介绍时空复杂度和稳定性。1.基本概念时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行... 阅读全文
-
性能分析
摘要:c#之冒泡排序的三种实现和性能分析 冒泡排序算法是我们经常见到的尤其是子一些笔试题中. 下面和大家讨论c#中的冒泡排序,笔者提供了三种解决方案,并且会分析各自的性能优劣. 第一种估计大家都掌握的,使用数据交换来实现,这种就不多说了,园子里的各位前辈分析的都很好,搜一下就有很多. 简单贴一下代... 阅读全文
-
LeetCode:Container With Most Water
摘要:LeetCode:Container With Most Water题目链接Givennnon-negative integersa1,a2, ...,an, where each represents a point at coordinate (i,ai).nvertical lines are... 阅读全文
-
常见算法总结
摘要:常见算法总结(1)大约两个月前一位朋友问我一道他同事的面试题目:一个含有无重复元素的集合,找出它所有的子集。例如{1,2}的所有集合是{}, {1}, {2}, {1, 2}.当时我预料到了这道题目的算法时间复杂度为O(2^n), 但是并没有写出代码来。前两天无意间又试着做了一下这道题目,然后接受查... 阅读全文
-
KMP算法
摘要:全局匹配KMP算法KMP算法是通过分析模式字符串,预先计算每个位置发生不匹配的时候,所需GOTO的下一个比较位置,整理出来一个next数组,然后在上面的算法中使用。本全局匹配KMP算法针对串的堆式存储数据结构1234567891011121314151617181920# define MAXSIZ... 阅读全文
-
Sort List
摘要:[leetcode]Sort List题目要求:Sort a linked list inO(nlogn) time using constant space complexity.数据结构定义:1 /**2 * Definition for singly-linked list.3 * str... 阅读全文
-
链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
摘要:链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)以下排序算法的正确性都可以在LeetCode的链表排序这一题检测。本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针)struct ListNode { int val; ListNode *next; ListNod... 阅读全文