自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 【每天学点算法题10.21】用两个队列实现栈

题目描述:使用两个队列实现栈,完成栈的压入和弹出操作。问题解决:栈的压入元素时,我们直接将数据插入到queue1中,这样最先插入的数据就在队列queue1的头部,最后插入的元素在队里queue1的尾部。现在我们考虑如何从栈中弹出一个元素,根据栈的特点“后进先出”,最后压入栈的元素应该最先弹出。最后插入的数据在queue1的尾部,而对于队列我们只能从头部删除元素,因此我们可以先出queue1中依

2013-10-21 10:17:02 740

原创 【每天学点算法题10.20】用两个栈实现队列

题目描述:用两个栈实现一个队列,完成队列在尾部插入结点和在头部删除结点的功能。问题解决:我们知道,栈的特点是“后进先出”,队列的特点是“先进先出”。题目的意图就是让我们操作两个“后进先出”的栈来实现一个“先进先出”的队列。现在我们只要用这两个栈实现队列的出队和入队功能就好了。现在有两个栈stack1和stack2。(1)入队:将元素插入到stack1中,stack2保持为空。(2)出队

2013-10-21 09:47:30 597

原创 【每天学点算法题10.18】找出数组中的第K大的数

题目描述:给定一个数组,数组的中的元素是无序的,找出其中第K大的数。解决办法:对于数组直接对数组进行排序,找到第K大的数,对于链表,先转化为数组然后求第K大的数。java示例代码如下:import java.util.*;public class FindKth{public static void main(String[] args){ //For the case of

2013-10-18 20:03:27 749 1

原创 【每天学点算法题10.17】求一个指定字符串中的回文子串

问题描述:给定一个字符串,求这个字符串中的回文子串。所谓回文字符串,大家应该都是了解的,就是一个字符串从左边读和从右边读是一样的,比如“level”。回文有两种形式,一种是类似于例子字符串"xcbv12344321sdsjhjh",另一种类似于例子字符串"xcbv1234321sdsjhjh",大家应该看出来区别了。那么下面是java的示例代码“public class Parli

2013-10-17 21:56:21 554

原创 【每天学点算法题10.17】寻找一个字符串中的最长重复子串

问题描述:给定一个字符串,寻找这个字符串的最长重复子串,如abcdeabc,其最长的重复子串为abc。问题解决:给定一个字符串,其最长重复子串的极端情况就是字符串长度的一半,如abcabc。那么我们就截取一些假定最长子串,然后和剩余的字符串比较,看看有没有存在子串。示例代码如下:public class RepeatString { String reg,left; publ

2013-10-17 17:49:00 1264

原创 【每天学点算法题10.16】斐波那契数列问题

问题描述:斐波那契数列是指这样一组数列,1,1,2,3,5,8,13,21.....大家可以看出来规律是,第n个数的数值是它的前面两位数的和。在数学上,斐波那契数列可以这样表示:F(0)=0,F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)。求斐波那契数列第n项数值和前n项的和。解决办法一:动态规划思想,采用递推的方法。示例代码如下:import java.util.S

2013-10-16 23:54:08 1202 2

原创 【每天学点算法题10.16】约瑟夫环问题

问题描述:由n个人形成首尾相连的圈,然后进行报数,第一个人从1开始报数,报到的数为m的人出列。剩下的人继续从1开始报数,报到的数为m的再出列.......直到所有人都出来为止。对于给定的n和m,求出所有人的出列顺序,以及最后一个出列的人标号。解决办法: 我们用数组来完成,示例代码如下:import java.util.Arrays;import java.util.Sca

2013-10-16 21:11:34 633

原创 【每天学点算法题10.16】由rand7()生成rand10()

题目描述:给你一个函数rand7(),它可以等概率地生成1~7之间的随机数,使用这个函数rand7(),生成一个函数rand10(),使其能够等概率地生成1~10之间的随机数。解决办法:舍去法。我们知道rand7()等概率地生成1~7之间的数,而rand10()等概率地生成1~10之间的数,rand7()没法生成8,9,10。但是如果我们有rand10()函数如何生成rand7()呢?一个很直

2013-10-16 19:56:39 1397

原创 【每天学点算法题10.15】求两个数的最大公约数

问题描述:求两个数的最大公约数。解决办法之一:我们可以使用经典的碾转相除法,如果用f(x,y)表示两个数x和y的最大公约数,那么f(x,y)=f(y,x%y),即我们可以把两个数的最大公约数问题转换成两个更小的数的最大公约数,直到其中一个数变为0,剩下的那个数就是原先两个数的最大公约数。如,f(45,30)=f(30,15)=f(15,0),最大公约数为15。java示例代码如下。

2013-10-15 23:13:19 710

原创 【每天学点算法题10.15】获取两个字符串之间最长公共子串的长度

问题描述:给定两个字符串,编写程序获取两个字符串之间最长公共子串的长度。例如字符串s1= "GCCCTAGCCAGDE",字符串s2="GCGCCAGTGDE",这两个字符串的最长公共子串就是“GCCAG”,其长度为5。解决办法: 把字符串s1截取成不同的子串,然后判断这些子串是不是存在于字符串s2中,并且长度最大,如果是长度最大的,那么就返回这个子串的长度。java实现的代码如下。

2013-10-15 20:46:01 1866

原创 【每天学点算法题10.15】指定一个字符串,对字符串左旋K位

题目描述:指定一个字符串,进行左旋k位操作。即字符串的前k位字符移到字符串的尾部,形成新的字符串。如把字符串abcdef左旋3位,得到defabc。要求对长度为n的字符串,时间复杂度为O(n)。笨方法:开辟一个大小为n的内存空间,将前k个字符拷到最后k个位置上,然后将原先的n-k个字符拷到前面的n-k个位置上。这种方法最直接,时间复杂度为O(n),空间复杂度也为O(n)。java实

2013-10-15 11:43:44 772

原创 【每天学点算法题10.14】给出一个单链表,返回倒数第K个节点的值

题目描述:给出一个单向链表的头指针,输出该链表中倒数第K个节点的值。笨办法:先从头遍历一遍链表,找出链表总长度len,然后再遍历一次求len-k-1的值。这个方法最容易想到,但是也是最笨的方法,因为这样要遍历两次链表。下面给出这种方法的java代码。public int getListLen(ListNode head){int len=0;ListNode p=head;wh

2013-10-14 19:55:46 1141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除