题意:给4个数组,从每个数组中选一个数,求出4个数和为0的方案数。
分析:暴力时间复杂度为N^3,肯定不行。所以考虑先把ab、cd的和分别求出来。-(a+b)=c+d即满足条件,求和复杂度为N*N。ab数组为-(a+b),cd数组为(c+d)。
从cd数组里找等于ab数组的即可。这里可以先给数组排序 ,然后用二分搜索找。复杂度为O(N*N*logN)。
#include
#include
#...
分类:
其他好文 时间:
2015-04-05 09:07:22
阅读次数:
128
一、有序表查找
1.折半查找/二分查找算法
(1)基本思想:在顺序存储的有序表中,取中间纪录(a[mid]=key)作为比较对象,若给定值与中间纪录的关键字相等,则查找成功;若给定值小于中间纪录的关键字,则在中间纪录的左半区继续查找;若给定值大于中间纪录的关键字,则在中间纪录的右半边。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。
(2)使用条件:线性表中的纪录是关键码...
分类:
其他好文 时间:
2015-04-04 23:49:18
阅读次数:
422
转载请表名出处:http://blog.csdn.net/u012637501
一、二叉排序树
如果要查找的数据集是有序线性表且是顺序存储的,查找可以用折半、插值、斐波那契等查找算法来实现。然后,由于有序,当我们在插入和删除操作上,就需要耗费大量的时间。下面将要学习的二叉排序树,就是一种既可以使得插入和删除效率不错,又可以比较高效率地实现查找的算法。为此,构造一棵二叉排序树的目的并不是...
分类:
编程语言 时间:
2015-04-04 23:48:36
阅读次数:
566
转自:http://www.cppblog.com/converse/archive/2009/10/05/97905.html二分查找算法基本思想二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的...
分类:
其他好文 时间:
2015-04-03 20:57:20
阅读次数:
167
题目链接:Search in Rotated Sorted Array
II
Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to...
分类:
其他好文 时间:
2015-04-03 17:20:58
阅读次数:
113
一道二分+贪心的题目,很好地融合了两种结题思路...
分类:
其他好文 时间:
2015-04-02 22:37:44
阅读次数:
183
Divide Two IntegersDivide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.思路:类似二分查找算法,只不过我们做的是对...
分类:
其他好文 时间:
2015-04-02 13:10:11
阅读次数:
114
二分查找是我们经常会遇到的算法,思路清晰,代码简洁。二分查找要求序列有序,且支持随机存取,一般情况下我们讨论的序列不存在相同元素,则二分查找可以很熟练的表示如下:
int binsearch(int A[], int n, int target)
{
int left=0,right=n-1,res=-1;
while(left<=right)
...
分类:
其他好文 时间:
2015-04-01 17:46:37
阅读次数:
142
目录STL算法概述查找算法堆算法关系算法集合算法排列组合算法排序和通用算法删除和替换算法生成和变异算法算数算法STL算法概述简介:STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象注意:编译器无法检测出所传递的迭代...
分类:
其他好文 时间:
2015-04-01 15:10:18
阅读次数:
136
字符串查找算法在于其效率的高低,单个字符的一次比较从头到尾遍历一遍肯定能找出来,但这样效率太低。比较著名的算法有KMP和BM(KMP看着烦躁),但个人来说,Sunday算法是我最能理解且效率不错的算法(而且代码很简单啊)。sunday算法关注的是模式串的下一个字符的匹配情况(因为字符串不匹配的话,模...
分类:
其他好文 时间:
2015-03-31 17:29:36
阅读次数:
180