Algorithm
lgx_Orz
这个作者很懒,什么都没留下…
展开
-
输入一个正数n,输出所有和为n 连续正数序列
思路:定义两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。如果从small到big的序列的和小于n的话,我们向右移动big,相当于向序列中添加big的下一个数字。 一直到small等于(1+n)/2,因为序列至少要有两个数字。原创 2014-05-21 22:46:25 · 1223 阅读 · 0 评论 -
数组的二分查找法
查找某个数是否在数组中,若存在,则返回所在的下标。[前提是数组已排序]public static int binarySearch(int[] arr,int key){int min = 0;int max = arr.length-1;int mid;while(min <= max){ mid = min + ((max-min)>>1); //防止溢出,移位也更高效 if原创 2014-05-21 22:27:26 · 708 阅读 · 0 评论 -
数组里找到和最接近于0的两个值?或者和等于0的两个值
与“寻找数组中满足和为定值的两个数”问题的思路一样:首先先排序;然后定义两个首尾指针left、right,逐次判断a[i]+a[j]?=0:①如果某一刻a[left]+a[right]>0, 和应该要变小,则left不动,right--,②如果某一刻a[left]+a[right]③如果某一时刻a[left]+a[right]=0,则直接退出循环。原创 2014-05-21 22:42:36 · 1872 阅读 · 1 评论 -
图着色问题
问题:给一个无向连通图着色,使得任意相邻的两个顶点之间颜色不一样,求最少所需的色数m?原创 2014-05-25 22:16:17 · 733 阅读 · 0 评论 -
使用后缀数组求字符串的最长重复子串
publicstatic void long_comstr(String str) { String[]s = new String[str.length()]; intmaxlen = 0, maxi = 0, temp; //构建后缀数组原创 2014-05-21 21:33:24 · 744 阅读 · 0 评论 -
找出数组中的最大连续乘积子串
用动态规划解决原创 2014-05-21 22:33:34 · 826 阅读 · 0 评论 -
杨氏矩阵查找问题
问题:一个m*n的矩阵,从左到右从上到下都是递增的,给一个数elem,求是否在矩阵中?杨氏矩阵是一个二维数组,特点是每行从左到右递增,每列从上往下递增。“定位法”具体的java实现代码:原创 2014-05-21 22:24:31 · 701 阅读 · 0 评论 -
桶排序
桶排序是一种效率很高的排序算法,它的时间复杂度为O(n),但桶排序有一定的限制,它需要知道待排序数组中的最大值,以便创建临时数组。算法思想:·设待排序序列的元素取值范围为0到m,则我们新建一个大小为m+1的临时数组并把初始值都设为0,·遍历待排序序列,把待排序序列中元素的值作为临时数组的下标,找出临时数组中对应该下标的元素使之+1;·然后遍历临时数组,把临时数组中元素大于0的下标作原创 2014-05-25 22:01:33 · 518 阅读 · 0 评论 -
Catalan数的应用场景
1、n对括号有多少种匹配方式?n对括号相当于有2n个符号,n个左括号、n个右括号,可以设问题的解为f(2n)f(2n) = f(0)*f(2n-2) + f(2)*f(2n - 4) + ... + f(2n - 4)*f(2)+ f(2n-2)*f(0)。解释:f(0) * f(2n-2)表示第0个字符与第1个字符匹配,同时剩余字符分成两个部分,一部分为0个字符,另一部分为2n-2个原创 2014-05-08 16:54:55 · 575 阅读 · 0 评论 -
寻找数组中满足和为定值的两个数或所有可能组合
方法一:如果数组是无序的,先排序,然后用两个指针i、j分别指向数组的首尾两端,然后i++,j--,逐次判断a[i]+a[j]?=sum:如果某一刻a[i]+a[j]>sum, i不动,j--,如果某一刻a[i]+a[j]这种算法的时间复杂度有序O(n)、无序O(n*logn),空间复杂度为O(1) public static void qiuhe(int[] a,int s原创 2014-05-21 22:37:25 · 1322 阅读 · 0 评论 -
找到两个有序数组的中位数
题目要求时间复杂度为log(m+n)。可以将此题转换成寻找第k小的数的问题!原创 2014-08-16 18:13:39 · 747 阅读 · 0 评论