码迷,mamicode.com
首页 >  
搜索关键字:时间复杂度    ( 8884个结果
【3】输入一颗二叉树判断是不是平衡二叉树
题目:输入一颗二叉树的根结点,判断该二叉树是不是平衡二叉树。平衡二叉树是满足所有结点的左右子树的高度差不超过1的二叉树 方案一:遍历数组的每一个结点,对每一个结点求它的左右子树的高度并进行判断。时间复杂度大于O(n),小于O(n^2)效率较低,因为有很多点需要重复访问。 //二叉树的结点 struct BinaryTreeNode{ int m_value; Bin...
分类:其他好文   时间:2014-05-26 04:34:53    阅读次数:192
在O(1)时间删除链表结点
删除链表结点注意保证链表不会断开。删除的节点是尾结点时,并不能保证是O(1)时间。但平均下来时间复杂度仍然保持在O(1)。...
分类:其他好文   时间:2014-05-26 03:38:22    阅读次数:166
二分查找
二分查找也是分治策略和递归一个重要的实例。对于一个有序的数组,二分查找的时间复杂度是O(logn)int binarysearch(int a[],int s,int e,int k){ int mid =(s+e)/2; if(k==a[mid]) return mid;...
分类:其他好文   时间:2014-05-26 02:23:44    阅读次数:170
[数据结构和算法]快速排序笔记
特点:1.是冒泡的改进2.是一个递归的过程3.不稳定4.时间复杂度:O(nlogn)设要排序的数组是A[0]...A[n-1],首先取数组的第一个数作为关键数据,然后将所有比它小的数都放到它的前面,比他大的都放到他的后面,这个过程被称为一趟快速排序算法步骤:1.设置两个变量i,j,排序开始i = 0...
分类:其他好文   时间:2014-05-26 01:48:16    阅读次数:282
理解RMQ问题和ST算法的原理
1.RMQ问题     RMQ (Range Minimum/Maximum Query):对于长度为n的数组A,回答若干询问RMQ(A,i,j)(i,jRMQ问题是指求区间最值的问题。最简单的方法,就是遍历数组直接搜索,但是这种方式时间复杂度是O(n)。对于数组长度较大,性能要求高的场景不适用。 2.ST(Sparse Table)算法 ST算法是一种更加高效的算法,以O(nlog...
分类:其他好文   时间:2014-05-25 22:28:29    阅读次数:375
连续序列和为s
题目:输入一个整数s,打印出所有和为s的连续整数序列(至少含有2个数)。例如输入9,则输出2、3、4和4、5两个序列 方案一:由于序列至少要2个数,则两个数上限值为(1+s)/2,我们可以枚举该序列的起点和终点求所有满足的序列。时间复杂度为O(n^2),效率比较低 方案二:我们设置两个指针start和end分别表示当前序列的起点和终点,并记序列和为sum。当sum = s的时候输出这个...
分类:其他好文   时间:2014-05-25 18:18:18    阅读次数:191
月球美容计划之最小生成树(MST)
寒假学的两个算法,普里姆,克鲁斯卡尔终于弄明白了,可以发总结了 先说说普里姆,它的本质就是贪心,先从任意一个点开始,找到最短边,然后不断更新更新len数组,然后再选取最短边并标记经过的点,直到所有的点被标记,或者说已经选好了n-1条边。 克鲁斯卡尔,一个排序一个并查集只是表面,实质还是贪心,只不过普里斯是任选一个点选最短路,而克鲁斯卡尔是看全局,全体边排序,当然,因为排序,导致时间复杂度不容易降下来。 拿SDUTOJ2144为例,代码如下,可做模板...
分类:其他好文   时间:2014-05-25 11:10:47    阅读次数:256
和为s的两个数字
题目:输入一个递增的排序的数组和一个数字s,在数组中查找两个数,使得它们的和为s。如果有多对满足条件的则输出任意一对即可 方案一:枚举两个数求和判断,时间复杂度O(n^2),显然效率太低 方案二:枚举第一个数,二分第二个数,时间复杂度O(nlogn),效率高了很多 方案三:设置两个指针p1,p2初始化指向数组的第一个数和最后一个数(即最小值和最大值),判断两个指针指向的两个数sum和...
分类:其他好文   时间:2014-05-25 10:03:37    阅读次数:186
【2】数字在数组中出现的次数
题目:统计一个数字k在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,输出4次 方案一:扫描数组,记录第一个出现的k和最后一个k中间有多少个,时间复杂度为O(n) 方案二:由于数组是有序的,那么我们可以利用二分的思想,求出k在数组中的第一个位置和最后位置相减即可。时间复杂度为O(logN) 注意严格按照良好的C++编码风格 #include...
分类:其他好文   时间:2014-05-24 21:09:24    阅读次数:194
【4】数组中只出现一次的数字
题目:输入一个整型数组,数组里除了两个数出现一次之外,其它所有数字出现的次数都是2次,求这两个数字。要求时间复杂度为O(n),空间复杂度为O(1) 1 题目要求时间复杂度为O(n)并且空间复杂度为O(1)。这个时候朴素的方法利用数字来记录出现次数的方案都是不行的。 2 根据题目的特点,只有两个数出现一次,其它的所有数据都是出现2次。如果这两个数是a和b,那么对这个数组异或的结果就是a^...
分类:其他好文   时间:2014-05-24 14:17:24    阅读次数:258
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!