自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 字符流中第一个不重复的字符

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。 输出描述: 如果当前字符流没有存在出现一次的字符返回#字符。解题思路: 1.首先用哈希表来存储字符和出现次数 2.统计次数,返回第一个只出现一次的字符实际操作: Arr

2016-08-01 20:20:23 249

转载 二叉搜索树的后序遍历序列

题目描述 : 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路: 二叉搜索树 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,

2016-08-01 20:12:53 228

转载 包含min函数的栈

题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 解题思路: 1.建立两个栈,栈date存储未处理的元素。 2.将栈date的栈顶元素和下一个元素相比,当栈顶元素较小时,栈顶元素入min栈。 实际操作: Stack<Integer> date=new Stack<>(); Stack<Integer> min = new Stack<>();

2016-08-01 19:48:59 213

转载 从上往下打印二叉树

题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路: 百度:二叉树遍历 二叉树的层次遍历的定义: 即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同) 1.结合层次遍历的定义,可判断此题实际为二叉树层次遍历 实际操作: public ArrayList<Integer> PrintFromTop

2016-08-01 19:00:15 243

转载 栈的压入,弹出序列

题目描述 : 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 解题思路: 1.新建栈stack,将序列压入栈 2.将栈顶端的数字与序列相比,

2016-07-31 16:26:13 241

转载 二叉树的镜像

题目描述: 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 1

2016-07-31 16:02:18 237

转载 树的子结构

题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路: 1.先比较根节点,当根节点相同时,则继续比较树A,B的左子树,右子树是否相同。 2.当根节点不相同时,则比较树A的左子树是否与树B相同,树A的右子树是否与树B相同。 实际操作     public boolean HasSubtree(TreeNode root1,Tr

2016-07-31 15:48:02 167

转载 重建二叉树

题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路: 二叉树遍历 1.前序遍历得到的第一个数字为二叉树的root节点。之后的序列为遍历左子树和右子树。 2.通过前序遍历得到root

2016-07-31 11:20:11 158

转载 反转链表

题目描述: 输入一个链表,反转链表后,输出链表的所有元素。 实际操作: public LIstNode ReverseList(ListNode head) { //特殊情况 if (head == null) return null; ListNode pre = null; ListNode next = null;

2016-07-24 20:32:20 173

转载 合并两个的排序链表

题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路: 按照递归的方式,不断比较大小,选择较小的插入链表。 实际操作: public listNode Merge1(ListNode list1, ListNode list2) { //特殊情况 if (list1==null) return l

2016-07-24 20:13:14 179

转载 调整数组顺序使奇数位于偶数前面

题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解题思路: 1.判断整数的奇偶性。 2.偶数时跳过,奇数时模仿冒泡排序法。利用第三个变量将奇数的位置不断前移,直至和前一个奇数相邻时为止 3.返回数组实际操作: public void reOrderA

2016-07-24 19:10:42 206

转载 数值的整数次方

题目描述 : 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。解题思路: 次方的定义实际操作: public double Power(double base, int exponent) { //特殊情况 if (exponent == 0) return 1; if (exp

2016-07-24 18:49:19 206

转载 用两个栈实现队列

题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路: java队列和栈的使用 队列的特点: 先进入的元素先出来,后进入的元素后出来。 栈的特点: 先进入的元素后出来,后进入的元素先出来。 1.利用stack1来存储元素。 2.不断的将stack1出栈的元素压入stack2的顶部。 3.stack2的元素出栈。 总结:利用两个

2016-07-24 17:57:17 201

转载 从头到尾打印链表

题目描述: 输入一个链表,从尾到头打印链表每个节点的值。 输入描述: 输入为链表的表头。解题思路: 利用函数arraylist中的add(int index, E element) 函数,将后一个节点的值插到前一个节点的值之前。即add.(0,listNode.val)。实际操作: public ArrayList<Integer> printListFromTailToHead(L

2016-07-24 17:23:38 221

转载 翻转单词序列

题目描述: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 解题思路: 1.

2016-07-20 15:42:45 419

转载 把数组排成最小的数

题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解题思路: 1.对数字组合ab和ba的值进行比较    如果 ab > ba ,则a > b    如果 ba > ab ,则b > a    如果ab=ba ,则a = b 2.按此种方式对所有数

2016-07-20 15:23:35 221

转载 矩形覆盖

题目描述 :我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路: 1.n=1时,存在1种方法  f(1)=1 2.n=2时,存在2种方法  f(2)=23.n=3时,存在3种方法 f(3)=f(2-1)+f(3-2) 4.n=4时,存在5种方法 f(4)=f(4-1)+f(4-2) … …

2016-07-20 12:49:30 176

转载 变态跳台阶

题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: 百度百科:斐波那契数列 斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 1.当青蛙第一次跳1级台阶时,跳法为f(n-1); 2.当青蛙第一次跳2级台阶时,跳法为f(n-2);

2016-07-20 12:19:09 184

转载 跳台阶

题目描述 : 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: 百度百科:斐波那契数列 斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 1.当青蛙第一次跳1级台阶时,剩余跳法为f(n-1); 2.当青蛙第一次跳2级台阶时,剩余跳法为f(n-2);3.由此可判断此题为斐波

2016-07-20 12:03:11 184

转载 斐波那契数列

题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39 解题思路: 百度百科:斐波那契数列 斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 利用for循环,对数组前两个数组不断叠加 解题思路: public int Fibonacci(int n) { //n

2016-07-20 11:48:01 269

转载 旋转数组的最小数字

题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路: 1.部分旋转时,即数组{1,2,3,4,5}旋转后为数组{3,4,5,1,2}

2016-07-20 11:15:37 147

转载 第一个只出现一次的字符位置

题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始 。 解题思路: 1.第一遍遍历时利用hashmap统计出现次数。 2.第二遍遍历时判断key对应的value是否符合要求。 实际操作: public int FirstNotRepeatingChar(String str) {

2016-07-03 13:07:14 201

转载 丑数

题目描述: 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 解体思路: 1.丑数定义:百度百科 2.所谓丑数,就是那些因子只含2,3,5的数。1,2,3,4,5,6,8,9,10,12,15是最前面的11个丑数。 4.对小于N的整数不断进行遍历。将其分为因子

2016-07-03 12:34:52 217

转载 整数中1出现的次数(从1到n整数中1出现的次数)

题目描述 :求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 解题思路: 1.将数组转化为字符串的形式, 2.对字符串遍历,数字1每重复一次,计步器加一。

2016-06-25 17:19:43 209

转载 连续子数组的最大和

题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住? 解题思

2016-06-25 17:13:13 203

转载 最小的K个数

题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 解题思路: 1.对n个数按由小到大进行排序 2.输出前K个数 实际操作: public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayL

2016-06-25 16:51:49 196

转载 表示数值的字符串

题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。 解题思路: 1.判断运算符号的位置是否正确。 2.判断小数点出现的次数。 3.判断e的位置。 实际操作: public b

2016-06-18 16:52:29 201

转载 构建乘积数组

题目描述: 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。 解题思路: 将B[i]分段计算,part1是A[0]A[1]…A[i-1],part2是A[i+1]…*A[n-1]。 实际操作: public int[] multiply(int[] A)

2016-06-18 16:27:41 150

转载 把字符串转换成整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 解题思路: 1.考虑字符串转为整数后的正负。 2.对单个字符判断,非数字返回0,为数字时,计算。 实际操作: public int StrToInt(String str) { //字符串不存在时,返回0 if (str.length()<1) return 0;

2016-06-18 14:54:07 357

转载 求1+2+3+...+n

题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 解题思路: 1,利用boolean变量和&&判断 2,利用递归计算实际操作: public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayL

2016-06-11 12:32:30 199

转载 和为S的两个数字

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。解题思路: 从数组两头取值,当sum>s时,取值左移。当sum ArrayList<Integer > list =new ArrayList<>(); if (array.l

2016-06-11 12:28:30 174

转载 扑克牌顺子

题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的

2016-06-11 12:21:09 219

转载 孩子们的游戏(圆圈中最后剩下的数)--约瑟夫环问题

题目描述每年六一儿童节,NowCoder都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为NowCoder的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这样下

2016-06-11 11:04:00 406

转载 和为S的连续正数序列

题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述: 输出所有和为S的连续正数序列

2016-06-11 10:53:33 314

转载 数组中出现次数超过一半的数字

题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路: 将数组按大小排序,若存在数字出现次数超过数组长度的一般,则数组中位数必定为该数字 。 (1)将数组排序完成后,取array的中位数,与数组其他数字比较大小每重复一次,

2016-05-31 22:58:06 210

转载 左旋转字符串

题目要求: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!解题思路: (1)更改字符串输出顺序,从第三个开始输出。 (2)输出第一步中忽略的前3个字符串

2016-05-28 21:38:08 250

转载 java基础(6)数组的操作--打印矩阵

题目要求: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 解题思路: (1)确定矩阵数组四个拐角的数字,用变量表示。 (2)数组按照左→右,上→下,右→左,下→上分次打印;当打印至

2016-05-28 01:55:16 908

转载 java基础(5) 数组的操作

题目要求: 给定两个一维数组,在给定一个整数k,返回两个数组的所有数中第K小的数。 解题思路: (1)将两个一维数组合并产生新数组 (2)对新数组进行排序 (3)确认整数K值,和K在数组中对应的位置,输出结果。 实际操作:public class ChartReplace10 { public static void main(String[] args) { in

2016-05-17 19:05:28 236

转载 java数组排序

题目要求: 给定一个整数一维数组,将它按照从小到大的顺序排列。解题方式: (1)使用冒泡排序来解决此问题。 (2)使用插入法来解决此题。思路(1)—冒泡排序: 1.将数组array中的array[i]与array[i+1]进行比较,判断出数值大小。 2.当array[i+1]小于array[i]时,通过第三个临时变量num来交换在数组中的原位置。当array[i+1]大于array[i]

2016-04-28 18:56:47 374

转载 java基础数据遍历(4)删除数组中重复数字

题目要求: 给定一个整数一维数组,其中可能有多个数字重复,请将多余重复的数字删除保留唯一一个,生成新的数组。解题思路: 1.遍历整个数组,同时创建一个等长度的标记数组。将数组中的每个数与该数前面所有的数进行比较,当数字重复时,将标记数组的同位置数字标记为1. 2.确定出新数组的长度 3.对新产生的数组进行赋值操作。实际操作 public static void main(Strin

2016-04-26 17:13:11 5761

空空如也

空空如也

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

TA关注的人

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