每日一练
ka_ko
菜鸟小白。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串数组中两个字符串的最小距离
【举例】strs=[“1”,”3”,”3”,”2”,”3”,”1”] “1”“2” 返回2 strs=[“CD”] “AB” “CD” 返回-1【代码】 //字符串数组中两个字符串的最小距离 public static int minDistance(String[] strs,String str1,String str2){ if(str1==null||str2原创 2017-11-29 11:34:59 · 1174 阅读 · 0 评论 -
找到被指的新类型字符
<java>public static void main(String[] args) { String s="aaABCDEcBCg"; System.out.println(pointNewChar(s,7));//Ec,情况1 System.out.println(pointNewChar(s,4));//CD,情况2 System.out.println(po原创 2017-11-30 11:07:09 · 276 阅读 · 0 评论 -
截至目前为止练习的题目
来自网络和《程序源代码面试指南》:package cn.itcast_04;import java.util.ArrayList;import java.util.List;public class demo { public static void main(String[] args) { func(12345); } //用递归实原创 2017-11-22 14:58:21 · 311 阅读 · 0 评论 -
设计一个有getMin的栈
【题目】实现一个栈,在基本功能基础上,能返回栈中最小元素【要求】各方法操作的时间复杂度为O(1) 可以使用现成的栈结构【例子】public class demo { public static void main(String[] args) { Mystack ms=new Mystack(); ms.push(3); ms.push(4)原创 2017-12-10 16:20:33 · 260 阅读 · 0 评论 -
替换字符串中连续出现的指定字符串
题目:字符串之替换字符串中连续出现的指定字符串给定3个字符串str from to已知from字符串无重复字符,把str中所有from的子串全都替换成to字符串,连续出现from只需要换成一个to就可。例如:str=”123adc” from = “adc” to =”4567” 返回1234567str=”123” from = “adc” to =”4567” 返回123str=”123adca原创 2017-11-23 10:17:55 · 343 阅读 · 0 评论 -
在行列都排好序的矩阵中找数
【题目】给定一个有N×M的整型矩阵matrix和一个整数K,matrix每行每列都排好序了。 实现一个函数,判断K是否在matrix中。【举例】0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 K=7,返回true;K=6,返回false【要求】时间复杂度O(N+M),额外控件复杂度为O(1)【代码】原创 2017-12-19 22:09:35 · 340 阅读 · 0 评论 -
数组中未出现的最小正整数
【题目】给定一个无序整型数组arr,找到数组中未出现的最小正整数。【举例】arr=[-1,2,3,4] 返回1 arr=[1,2,3,4] 返回5【代码】 //数组中未出现的最小正整数 public static int findInt(int[] arr){ if(arr==null||arr.length==0){ return -1;原创 2017-12-20 09:55:22 · 2077 阅读 · 0 评论 -
括号字符串的有效性和最长有效长度
【题目】 1.给定一个str,判断是不是整体有效的括号字符串 2.返回最长的有效括号字串长度【示例】 public static void main(String[] args) { String s="()"; System.out.println(isValid(s));//true s="(()))"; System.o原创 2017-12-03 15:06:43 · 1728 阅读 · 0 评论 -
字符串的统计字符串
题目一:给定一个字符串str,返回其统计字符串, 例如String s=”aaabbadddffc”;其统计字符串形式为”a_3_b_2_a_1_d_3_f_2_c_1“。题目二:给定一个字符串的统计字符串,再给定一个整数,返回原始字符串上该整数上的字符。 例如”a_1_b_100”,0返回‘a’,100返回‘b’public class demo { public static voi原创 2017-11-24 10:23:23 · 725 阅读 · 0 评论 -
回文最少分割数
【题目】给定str,返回把str全部切成回文子串的最小分割数【例子】public static void main(String[] args) { String s="ABA"; System.out.println(minSlip(s));//0 s="ACDCDCDAD"; System.out.println(minSlip(s原创 2017-12-04 09:56:19 · 295 阅读 · 0 评论 -
用一个栈实现另一个栈的排序
【题目】一个栈中元素类型为整型,想将该栈从顶到底按从大到小排序,只允许申请一个栈。除此之外,可以申请新变量,但不能申请额外的数据结构。【举例】 public static void main(String[] args) { Stack<Integer> ms=new Stack<Integer>(); ms.push(3); ms.push(4原创 2017-12-13 09:54:35 · 813 阅读 · 1 评论 -
获取字符串中每一个字母出现的次数
【题目】“aababcabcdabcde”,获取字符串中每一个字母出现的次数 要求结果:a(5)b(4)c(3)d(2)e(1)【分析】A:定义一个字符串(可以改进为键盘录入) B:定义一个TreeMap集合 键:Character 值:Integer C:把字符串转换为字符数组 D:遍历字符数组,得到每一个字符 E:拿刚才得到的字符作为键到集合中去找值,看返回值原创 2017-12-21 11:45:14 · 1955 阅读 · 0 评论 -
在单链表中删除指定值的节点
【题目】给定一个链表的头节点head和一个整数Num,实现将值为num的节点全部删除。【举例】链表为1->2->3->4->null,num=3, 调整后为:1->2->4->null【代码】//在单链表中删除指定值的节点 public static Node removeValue(Node head,int num){ while(head!=null){//找到第一个原创 2017-12-13 10:48:19 · 7336 阅读 · 0 评论 -
判断串中每种字符是否只出现一次,时间复杂度O(N)
public static void main(String[] args) { char[] c="a2b".toCharArray(); boolean res=isUnique1(c); System.out.println(res); } //判断串中每种字符是否只出现一次,时间复杂度O(N) public原创 2017-11-25 09:47:12 · 373 阅读 · 0 评论 -
在有序但含有空的数组中查找字符串
题目给定一个字符串数组,其中有些位置是Null,且字符串按照字典顺序从小到大排序。再给定一个字符串,返回其在数组中出现的最左的位置,否则返回-1.public class demo { public static void main(String[] args) { String[] c=new String[]{null,"a",null,"a","b"};原创 2017-11-26 18:44:25 · 493 阅读 · 0 评论 -
字符串的调整与替换_附时空复杂度总结(转)
要求:时间复杂度为O(N),额外控件复杂度为O(1)//字符串的调整与替换:把左区空格字符替换成"%20",右区全为空字符 public static void replace(char[] chas){ if(chas==null||chas.length==0){ return; } int len=0;原创 2017-11-27 10:15:24 · 1491 阅读 · 0 评论 -
画匠问题
【题目】给定整型数组arr,元素表示完成一幅画需要的时间, 给定整数num,表示画匠数, 每个画匠只能画连在一起的画作,所有画匠并行工作, 返回所有完成画作所需要的最少时间。【例子】public class demo { public static void main(String[] args) { int[] arr=new int[]{3,1,4};原创 2017-12-14 18:02:27 · 466 阅读 · 0 评论 -
丢棋子问题
【题目】给定整数N作为楼层数(地面是0层),整数K是棋子数,返回如果想找到棋子不会摔碎的最高层数(从0层掉落肯定不会碎,第i层可能会可能不会)。 即:在最差的情况下扔的最少次数。 一次只能仍一个棋子。【例子】N=10,K=1,返回10. 最差情况下,第10层是不会摔碎的最高层,棋子从1层试到10层N=3,K=2,返回2 先在2层仍一颗棋子,碎了试1层,没碎试3层N=105,K=2,返回14【原创 2017-12-15 10:35:01 · 1193 阅读 · 1 评论 -
跳跃游戏
【题目】给定arr数组,arr[i]=k表示从位置i最多可以向右跳k个位置。 如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。【例子】arr=[3,2,3,1,1,4], arr[0]=3,选择跳到位置2, arr[2]=3,可以跳到最后的位置, 所以返回2,即跳两次【代码】public static void main(String[] args) { Syste原创 2017-12-15 11:30:08 · 271 阅读 · 0 评论 -
N皇后问题
【题目】在N×N的棋盘上要摆N个皇后,要求任何两个皇后不同行不同列,也不再同一条斜线上。给定一个整数n,返回n皇后的摆法有多少种。【举例】n=1,返回1 n=2或3,无论怎么摆都不行,返回0 n=8,返回92【代码】public static void main(String[] args) { System.out.println(queen(1));//1 Sy原创 2017-12-24 18:00:43 · 284 阅读 · 0 评论 -
翻转字符串
public static void main(String[] args) { char[] c="dog loves pig".toCharArray(); rotateWord(c); for(int i=0;i<c.length;i++){ System.out.print(c[i]); } Sys原创 2017-11-28 09:46:52 · 211 阅读 · 0 评论 -
纸牌博弈问题
【题目】给定整型数组arr,代表数值不同的纸牌排成一条线。两个玩家AB依次拿走每张纸牌,规定A先拿,B后拿,但每次只能拿走最左边或最右边的纸牌,两人都决定聪明。 请返回最后获胜者的分数。【举例】arr=[1,2,100,4] A拿走1,B拿走2或4,A拿100,返回101arr=[1,100,2] A拿1或2,B拿100,返回100public static void main(String[原创 2017-12-16 10:47:58 · 616 阅读 · 0 评论 -
找到字符串的最长无重复字符子串
【题目】 给定str,返回其最长无重复字符子串的长度。 要求时间复杂度为O(N).【举例】public static void main(String[] args) { String s="abcd"; System.out.println(maxNoRepeat(s));//4 s="aabcb"; System.out.pri原创 2017-12-07 22:29:21 · 333 阅读 · 0 评论 -
自然数数组的排序
【题目】给定一个长度为N的整型数组arr,其中有N个互不相等的自然数1~N,请实现arr的排序,但是不要把下标0~N-1位置上的数通过直接赋值的方式替换成1~N。【要求】时间复杂度为O(N),额外空间复杂度为O(1)【代码】 public static void main(String[] args) { int[] res={1,2,4,3,6,5}; sor原创 2017-12-25 20:19:29 · 1309 阅读 · 0 评论 -
子数组的最大累加和问题
【题目】给定一个数组arr,返回子数组中的最大累加和。 例如,arr[1,-2,3,5,-2,6,-1],其中子数组[3,5,-2,6]累加和最大为12,故返回12.【要求】时间复杂度为O(N),额外空间复杂度为O(1)【代码】public static void main(String[] args) { int[] res={1,-2,3,5,-2,6,-1};原创 2017-12-25 20:56:55 · 441 阅读 · 0 评论 -
换钱的方法数
【题目】给定数组arr,所有元素都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求换钱有多少种方法。【举例】arr=[5,10,25,1] aim=0 返回1。组成0元的方法有一种,即所有货币都不用arr=[3,5] aim=2 返回0。无法组成2.arr=[5,10,25,1] aim=15 返回6。3*5,5+10,10*1+5原创 2017-12-17 11:00:35 · 1076 阅读 · 0 评论 -
调整[0,x)区间上的数出现的概率
【题目】函数Math.random()等概率随即返回一个在[0,1)范围上的 数,即在[0,x)区间的数出现的概率为x(0<x≤1) 给定一个大于0的整数k,使用Math.random(), 实现返回在[0,1)上的数,但在[0,x)区间的数出现的概率为x^k (0<x≤1)【解答】只用调用k次Math.random(),返回最大的那个数即可【代码】//交换两个整数的值 public st原创 2017-12-08 10:13:00 · 414 阅读 · 0 评论 -
数字字符串转换为字母组合的种数
【题目】给定一个字符串str,全由数字字符组成,如果其中某一个或某相邻两个字符组成的子串值在1-26之间,则这个子串可以转换成一个字母。规定1转成A,26转成Z。 求str有多少种不同的转换结果。【举例】str=1111 返回5,结果有AAAA,LAA,ALA,AAL,LLstr=01 返回0,0没有对应字母,不可转换str=10 返回1,只能转成J【代码】public static voi原创 2017-12-18 10:26:06 · 1197 阅读 · 0 评论 -
在有序旋转数组中找到最小值
【题目】有序数组arr可能经过一次旋转处理,也可能没有,且arr可能存在重复的数。例如,有序数组[1,2,3,4,5,6,7],可以旋转为[4,5,6,7,1,2,3]。 给定一个可能旋转过的有序数组arr,返回arr中最小值。【代码】public static void main(String[] args) { System.out.println(getMin(new int原创 2017-12-19 09:58:07 · 411 阅读 · 0 评论 -
不包含本位置值的累乘数组
【题目】给定一个整型数组arr,返回不包含本位置值的累乘数组 例如,arr=[2,3,1,4],返回[12,8,24,6]【要求】时间复杂度为O(N),除需要返回的结果数组外,额外空间复杂度为O(1)【进阶题目】要求不变,而且不可以使用除法【代码】public class demo { public static void main(String[] args) { int原创 2018-01-12 10:38:21 · 293 阅读 · 0 评论 -
奇数下标都是奇数或者偶数下标都是偶数
【题目】给定一个长度不小于2的数组,实现要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数。【要求】时间复杂度O(n),额外空间复杂度O(1)【代码】 public static void main(String[] args) { int[] res={1,8,3,2,4,6}; modify(res); for(int i:res){原创 2017-12-27 21:29:11 · 716 阅读 · 0 评论 -
数组中字数组的最大累乘积
【题目】给定一个double类型的数组arr,其中元素可正、可负、可0,返回子数组累成的最大乘积。 例如,arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,故返回12【要求】时间复杂度O(N) 额外空间复杂度O(1)【代码】public static void main(String[] args) { double[] arr原创 2018-01-13 10:20:35 · 362 阅读 · 0 评论 -
需要排序的最短子数组长度
【题目】给定一个无序数组arr,求出需要排序的最短子数组长度。 例如:arr=[1,5,3,4,2,6] 返回4,因为只有[5,3,4,2]需要排序。【代码】public static void main(String[] args) { int[] res={1,5,3,4,2,6}; System.out.println(rank(res)); }原创 2017-12-28 22:28:37 · 718 阅读 · 0 评论 -
求两个数的最大公约数
【题目】 一行代码求两个数的最大公约数【代码】public static void main(String[] args) { int res=gcd(8251,6105); System.out.println(res);//37 } //一行代码求两个数的最大公约数 public static int gcd(int m,int n){原创 2018-01-04 16:55:21 · 232 阅读 · 0 评论 -
某种要求下的最长字数组长度
【题目】 未排序正数数组中累加和为给定值的最长字数组长度。 给定一个arr,无序,但每个元素都为正数,再给定一个整数k。求arr的所有子数组中所有元素相加和为k的最长字数组长度。【举例】 arr=[1,2,1,1,1],k=3 最长字数组为[1,1,1],所以返回3【代码】// 未排序正数数组中累加和为给定值的最长字数组长度 private static int getMaxLeng原创 2018-01-04 17:46:07 · 335 阅读 · 0 评论 -
数组中的最长连续序列
【题目】给定无序数组arr,返回其中最长的连续序列的长度【举例】arr=[100,4,200,1,3,2],最长的连续序列为[1,2,3,4],返回4【代码】 public static void main(String[] args) { int[] arr={100,4,200,1,3,2}; System.out.println(longestarr(ar原创 2018-01-22 10:31:21 · 1330 阅读 · 0 评论 -
整数的二进制表达中有多少个1
【题目】给定一个32位整数n,可为0,可为正负,返回该整数二进制表达中1的个数。【代码】public static void main(String[] args) { int a = 0b1000101111; System.out.println(a&1);//1 System.out.println(countOne(a));//6原创 2018-01-14 10:08:55 · 678 阅读 · 0 评论 -
折纸问题
【题目】请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折一次,压出折痕后展开。此时折痕是凹下去的,也就是折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。 给定一个输入参数N,代表纸条从下边向上方连续对折N次,请从上到下打印所有折痕的方向。【举例】N=1,down N=2,down down up N=原创 2018-01-15 10:45:09 · 503 阅读 · 0 评论 -
子矩阵的最大累加和问题
【题目】给定一个矩阵matrix,其中的值有正负0,返回子矩阵的最大累加和。【举例】例如,matrix为: -90 48 78 64 -40 64 -81 -7 66 其中,最大累加和的子矩阵为: 48 78 -40 64 -7 66 所以返回209matrix为: -1 -1 -1 -1 2 2 -1 -1 -1 其中,最大累加和的子矩阵为: 2 2 所以返原创 2018-01-23 10:22:23 · 296 阅读 · 0 评论 -
从N个数中等概率打印M个数
【题目】给定一个长度为N且没有重复元素的数组arr和一个整数m,实现函数等概率随机打印arr的M个数。【要求】相同的数不要重复打印 时间复杂度为O(M),额外空间复杂度为O(1) 可以改变arr数组【代码】//从N个数中等概率打印M个数 public static void printRandM(int[] arr, int m) { if(arr==null||arr.原创 2018-01-16 09:36:33 · 425 阅读 · 0 评论
分享