随笔分类 -  算法题

摘要:主要有两种 1 基于数据库,每次指定步长(step),步长消耗完成后,更新数据库里的value为oldValue+step,再循环。 ID最大值为Long.MAX_VALUE-1.当应用程序需要获取id时,将有idGenerator访问DB,并获取一个range:[value,value+step) 阅读全文
posted @ 2018-10-11 14:54 雪浪snowWave 阅读(178) 评论(0) 推荐(0)
摘要:参考 https://segmentfault.com/a/1190000011282426 阅读全文
posted @ 2018-10-11 14:34 雪浪snowWave 阅读(307) 评论(0) 推荐(0)
摘要:递归版本: /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }*/ public cla 阅读全文
posted @ 2017-06-13 20:26 雪浪snowWave 阅读(130) 评论(0) 推荐(0)
摘要:题目:现在有一个城市销售经理,需要从公司出发,去拜访市内的商家,已知他的位置以及商家的位置,但是由于城市道路交通的原因,他只能在左右中选择一个方向,在上下中选择一个方向,现在问他有多少种方案到达商家地址。给定一个地图map及它的长宽n和m,其中1代表经理位置,2代表商家位置,-1代表不能经过的地区, 阅读全文
posted @ 2017-04-20 22:24 雪浪snowWave 阅读(150) 评论(0) 推荐(0)
摘要:题目:小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法 阅读全文
posted @ 2017-04-20 18:11 雪浪snowWave 阅读(139) 评论(0) 推荐(0)
摘要:题目:对于两个字符串,请设计一个时间复杂度为O(m*n)的算法(这里的m和n为两串的长度),求出两串的最长公共子串的长度。这里的最长公共子串的定义为两个序列U1,U2,..Un和V1,V2,...Vn,其中Ui + 1 == Ui+1,Vi + 1 == Vi+1,同时Ui == Vi。 输入"1A 阅读全文
posted @ 2017-04-20 15:49 雪浪snowWave 阅读(111) 评论(0) 推荐(0)
摘要:题目:对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。请编写一个高效算法,判断C串是否由A和B交错组成 "ABC",3,"12C",3,"A12BCC",6 返回:true 思路:维护两个指针即可,但是while循环的跳出条件和结束循环返 阅读全文
posted @ 2017-04-20 05:20 雪浪snowWave 阅读(261) 评论(0) 推荐(0)
摘要:题目:对于字符串A,其中绝对不含有字符’.’和’*’。再给定字符串B,其中可以含有’.’或’*’,’*’字符不能是B的首字符,并且任意两个’*’字符不相邻。exp中的’.’代表任何一个字符,B中的’*’表示’*’的前一个字符可以有0个或者多个。请写一个函数,判断A是否能被B匹配。"abcd",4," 阅读全文
posted @ 2017-04-20 04:40 雪浪snowWave 阅读(764) 评论(0) 推荐(0)
摘要:题目:对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。给定一个整数数组A及它的大小n,请返回最短子数组的长度。1,5,3,4,2,6,7],7 返回:4 思路:将数组排序再和原数组比较有多少位连续的不同,有可能一段不同中某一位相同,当时这个不能算,所以从两端扫描数组,直到某一位不 阅读全文
posted @ 2017-04-20 03:49 雪浪snowWave 阅读(219) 评论(0) 推荐(0)
摘要:题目:对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。"abc1234321ab",12 返回:7 思路:思路很直接,还是找对称轴,然后往两边扫,注意控制边界,得到最大值,对称轴也还是分两种,“aba”中'b'形和“abba”中' 阅读全文
posted @ 2017-04-20 02:15 雪浪snowWave 阅读(130) 评论(0) 推荐(0)
摘要:题目:对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串。给定原字符串A及它的长度n,请返回添加的字符串。保证原串不是回文串。"ab",2 返回:"a" 思路:刚开始思路很死,就是判断对称轴在哪,(对称轴一定在字符串右半边 阅读全文
posted @ 2017-04-20 01:23 雪浪snowWave 阅读(493) 评论(0) 推荐(0)
摘要:题目:有数组penny,penny中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim(小于等于1000)代表要找的钱数,求换钱有多少种方法。给定数组penny及它的大小(小于等于50),同时给定一个整数aim,请返回有多少种方法可以凑成aim。 阅读全文
posted @ 2017-04-19 22:04 雪浪snowWave 阅读(190) 评论(0) 推荐(0)
摘要:题目:对于两个字符串A和B,我们需要进行插入、删除和修改操作将A串变为B串,定义c0,c1,c2分别为三种操作的代价,请设计一个高效算法,求出将A串变为B串所需要的最少代价。给定两个字符串A和B,及它们的长度和三种操作代价,请返回将A串变为B串所需要的最小代价。保证两串长度均小于等于300,且三种代 阅读全文
posted @ 2017-04-19 21:32 雪浪snowWave 阅读(320) 评论(0) 推荐(0)
摘要:题目:一个背包有一定的承重cap,有N件物品,每件都有自己的价值,记录在数组v中,也都有自己的重量,记录在数组w中,每件物品只能选择要装入背包还是不装入背包,要求在不超过背包承重的前提下,选出物品的总价值最大。给定物品的重量w价值v及物品数n和承重cap。请返回最大总价值。 思路:对于第i 件商品, 阅读全文
posted @ 2017-04-19 20:54 雪浪snowWave 阅读(104) 评论(0) 推荐(0)
摘要:题目:给定两个字符串A和B,返回两个字符串的最长公共子序列的长度。例如,A="1A2C3D4B56”,B="B1D23CA45B6A”,”123456"或者"12C4B6"都是最长公共子序列。给定两个字符串A和B,同时给定两个串的长度n和m,请返回最长公共子序列的长度。保证两串长度均小于等于300。 阅读全文
posted @ 2017-04-19 19:02 雪浪snowWave 阅读(143) 评论(0) 推荐(0)
摘要:题目:这是一个经典的LIS(即最长上升子序列)问题,请设计一个尽量优的解法求出序列的最长上升子序列的长度。给定一个序列A及它的长度n(长度小于等于500),请返回LIS的长度。 思路:经典dp,维护一个一维数组dp[],里面每个值代表必须以这个索引对应的序列值结尾的最长子序列,然后在dp[]里找出最 阅读全文
posted @ 2017-04-19 18:32 雪浪snowWave 阅读(247) 评论(0) 推荐(0)
摘要:题目:有一个矩阵map,它每个格子有一个权值。从左上角的格子开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。给定一个矩阵map及它的行数n和列数m,请返回最小路径和。保证行列数均小于等于100. 思路:典型dp,比较简单,用有一个二 阅读全文
posted @ 2017-04-19 13:12 雪浪snowWave 阅读(279) 评论(0) 推荐(0)