![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithms Training
iteye_16074
这个作者很懒,什么都没留下…
展开
-
经典算法——LCS最长公共子序列问题
LCS:就是最长公共子序列。其中子序列(Subsequence)的概念不同于字符串中的子串。它是一个不一定连续但按顺序取自字符串X的字符序列。例如字符串“AAAG”就是字符串“CGATAATTGAGA”的一个子序列。字符串的相似问题可以通过求解两个字符串之间的最长公共子序列(LCS)来解决。编写一个程序来实现找一个字符串的最大公共子序列。...原创 2011-09-01 15:15:13 · 169 阅读 · 0 评论 -
将一个整数拆分成两个整数的平方和算法
问题:请使用C/C++写一个程序实现将一个整数拆分成两个整数的平方和,把所有的可能的组合都要计算出来。答:假定输入的整数为n,则扫描1-(n的平方根)之间的整数,令row=1,column=(int)(sqrt((double)given)+0.5),使得row*row+column*column=n的数输出即可。代码如下所示:[code="C++"]//// ...原创 2011-11-03 15:26:42 · 4133 阅读 · 0 评论 -
给定一个整数数组,检测是否存在一个和为零的子数组
问题:给定一个整数数组,写一个算法实现判断是否存在一个和为零的子数组。答:算法思路:计算数组的前缀和,然后将前缀和进行排序,如果存在连续两个元素相同的情况即存在一个和为零的子数组,否则不存在。算法的代码实现:[code="C++"]//// main.cpp// MyProjectForCPP//// Created by labuser on...原创 2011-11-03 16:22:31 · 306 阅读 · 0 评论 -
筛除数组中重复的元素
问题:编写一个程序实现筛除数组中重复元素功能。算法思路:基于简单的想法,先把数组排序,然后扫描整个数组跳过重复的元素。算法的效率取决于排序算法的效率。算法实现:[code="java"]//// main.cpp// MyProjectForCPP//// Created by labuser on 11/2/11.// Copyrigh...原创 2011-11-03 21:12:15 · 148 阅读 · 0 评论 -
字符串移位包含问题
问题:给定两个字符串s1和s2,要求判断s2是否能够通过s1做循环移位操作得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。答:这个问题可以使用“提高空间复杂度来换取时间复杂度的降低”的思路来解决。实现代码:[code="java"]public class ShiftStringMa...原创 2011-11-03 22:10:05 · 98 阅读 · 0 评论 -
Java面试问题之五十
Question: Provide a function to accept an integer array and computes the maximum consecutive sum. If the maximum sum is negative, this function returns zero.问题:请一个整数数组的最大连续和,若和小于零则返回零。实现代码:...原创 2011-11-07 21:27:46 · 81 阅读 · 0 评论 -
大整数排序
问题:对N个长度最长可达1000的数进行排序。输入:输入第一行为一个整数N,(1原创 2012-02-29 22:12:27 · 129 阅读 · 0 评论 -
Day of Week
问题:We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400.For example, years 2004, 2180 and 2400 are ...原创 2012-03-02 17:30:42 · 185 阅读 · 1 评论 -
疯狂的JobDu序列
[b][color=red]问题[/color]:[/b]阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度……在等题目的时候,阳仔又不敢出去打篮球,所以只能在纸上乱涂乱写,这天,阳仔在纸上写下了这样的序列:1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 ……即大小为k的数字,正好会在序列中连续重复k...原创 2012-03-07 15:10:46 · 180 阅读 · 0 评论 -
陈博的完美主义
[b][color=red]问题:[/color][/b]在JOBDU团队里,陈博是最讲平均主义的人,对数字十分敏感。事实上,他还是个数字完美主义者。例如看到N个数字的时候,从1到N的每个数都需要在其中出现且仅出现一次,否则他就觉得这个数字序列不完美。后来,我明白了:这是排列!对于一个整数序列d1, d2, d3 ... dn,你是否能够算出至少改变其中的几个数,才能把他们变成从1到N的一个排...原创 2012-03-08 10:31:43 · 133 阅读 · 0 评论 -
如何实现数组的高效移位算法
问题:编写一个能够支持数组快速移位的算法,时间复杂度在O(N)以内。答:要实现在线性的时间内实现数组的快速移动,就要考虑如何使用逆序算法来达到移动的目的。例如,我要移动的数组元素称为A,剩余的部分称为B,那么原来次序为AB,如何变成BA呢?其实根据倒置的算法是可以实现移位操作的,我们先取A'为A的逆序序列,B'为B的逆序序列,进行(A'B')'操作即可得到BA序列。实现算法如下:[...原创 2011-11-03 13:00:14 · 596 阅读 · 0 评论 -
特殊的数
问题:现在有n个数,其中有一些出现一次,一些出现两次,一些出现了很多次。现在要求你找出那些只出现一次的数,并且按升序输出。输入要求:本题有多组case。每个case有两行,第一行输入一个n,表示有n个数,1...原创 2012-02-26 11:04:10 · 152 阅读 · 0 评论 -
Output the k-th Prime Number
问题:输出第k个素数(1原创 2012-02-17 18:23:41 · 472 阅读 · 0 评论 -
Algorithm 01 : 寻找最长有序子序列
[b][color=red]Question : To find max sorted contiguous subsequence of an Array.[/color][/b]问题:查找数组中的最长有序子序列。[code="java"]/** * @author YuHuang * @vision 2011-10-03 * This program ...原创 2011-10-03 15:55:27 · 116 阅读 · 0 评论 -
Algorithm 02 : 以K个元素为一组逆转链表
[b][color=red]Question : Reverse a Linked List in groups of given size K.[/color][/b]问题:以K个元素为一组逆转链表。[code="java"]/** * @author YuHuang * @vision 2011-10-03 * This program is only f...原创 2011-10-03 22:29:29 · 75 阅读 · 0 评论 -
Algorithm 03 : 合并两个有序数组
[b][color=red]Question : Merge a sorted array of size n into another sorted array of size m+n.[/color][/b]问题:合并两个有序的数组,将一个长度为n的数组插入到指定的长度为m的数组中。[code="java"]/** * @author YuHuang * @...原创 2011-10-04 13:32:33 · 77 阅读 · 0 评论 -
Algorithm 04 : 寻找两个有序数组中的第N个数,要求时间复杂度为O(logm+logn)
Question : Give a divide and conquer algorithm for the following problem : you are given two sorted lists of size m and n, and are allowed unit time access to the...原创 2011-10-04 21:32:42 · 971 阅读 · 0 评论 -
判断一个数是否是2的幂的快速方法
使用Java语言编写程序来判断一个整数是不是2的阶次方数,要求使用尽量快速简便的方法。答:如果一个数是2的阶次方数,那么它的二进制数的首位一般是1,后面接若干位0。比如8就是1000,64是1000000。如果将这个数减1再与该数做&运算,则应该全部位都是0。所以如果一个数d,满足d&(d-1)==0,则这个数必定是可以被2的幂整除的数。[code="java"]import ...原创 2011-10-08 11:35:13 · 210 阅读 · 0 评论 -
Algorithm 05 : 给定一个数组,寻找第K大的数
给定一个无序数组,求数组中第K大的数。答:求一个数组中第K大数可以借用快速排序算法的思想,主要思路如下: (1)在数组中随机选择一个数作为支点。 (2)将比作为支点数大的所有数放在这个支点的左边,支点放在数组中间的位置。 (3)设支点左边元素的个数为L,那么可以分以下三种情况: (a)当K=L的时候,直接返回支点即是所...原创 2011-10-11 13:44:20 · 172 阅读 · 0 评论 -
液晶屏幕裁剪问题
问题:苏州某液晶厂一直生产a * b大小规格的液晶屏幕,由于该厂的加工工艺限制,液晶屏的边长都为整数。最近由于市场需求发生变化,x : y比例的显示器比较流行,该厂为了适应市场需求,需要改造原生产线,并将库存的a * b大小的液晶屏进行裁剪,使之适应市场的需求。该厂同时希望,将a * b大小的液晶屏裁剪之后,不仅符合x : y的比例要求,同时在转换为新比例液晶屏的过程中,保证因切割而丢弃的液晶边角...原创 2012-02-12 19:30:03 · 202 阅读 · 0 评论 -
导弹拦截问题
[color=green]问题:[/color]某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。...原创 2012-02-14 19:41:40 · 321 阅读 · 0 评论 -
最大子序列和
[color=green]问题:[/color]给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”。对于S的所有非空连续子序列T,求最大的序列和。变量条件:N为正整数,N≤1000000,结果序列和在范围(-2^63,2^63-1)以内。输入:第一行为一个正整数N,第二行为N个整数,表示序列中的数。输出:输入可能包括多...原创 2012-02-15 14:06:49 · 162 阅读 · 0 评论 -
Algorithm 06:删数问题
问题:键盘输入一个高精度的正整数N(N原创 2011-11-30 12:16:26 · 117 阅读 · 0 评论