摘要: 题目:假如要判断字符串A"ABA"是不是字符串B"ABABABA"的子串。 解法一:暴力破解法, 直接枚举所有的长度为3的子串,然后依次与A比较,这样就能得出匹配的位置。 这样的时间复杂度是O(M*N),M为B的长度,N为A的长度。 解法二:Rabin-Karp算法 思想:假设待匹配字符串的长度为N 阅读全文
posted @ 2019-01-23 20:19 |旧市拾荒| 阅读(1118) 评论(0) 推荐(0) 编辑
摘要: 题目:Alibaba笔试题,给定一段产品的英文描述,包含M个英文单词,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法。String extractSummary(String description,String[] key words)目标是找出此产品描 阅读全文
posted @ 2019-01-22 22:58 |旧市拾荒| 阅读(761) 评论(0) 推荐(0) 编辑
摘要: 题目一:移除字符串中连续出现的K个0。 代码: 题目二:回文字符串。 代码: 阅读全文
posted @ 2019-01-22 22:28 |旧市拾荒| 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 题目一:压缩字符串。实现一个算法,利用字符重复出现的次数,实现基本的字符串压缩功能。比如,测试样例"aabcccccaaa" 返回:"a2b1c5a3"。若压缩后的字符串没有变短,则返回原先的字符串。 代码: 题目二:判断两字符串的字符集是否相同。实现一个算法,判断两个字符串是否由相同的字符所组成, 阅读全文
posted @ 2019-01-22 16:06 |旧市拾荒| 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 题目一:实现一个算法,确定一个字符串的所有字符是否全都不同(有没有重复字符)。 代码: 题目二:请实现一个算法,翻转一个给定的字符串。 代码: 题目三:变形词问题。给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。 代码: 题目四:替换字符串中的空格。请编写一个方 阅读全文
posted @ 2019-01-21 16:25 |旧市拾荒| 阅读(299) 评论(0) 推荐(1) 编辑
摘要: 题目:给定一个矩阵matrix,其中的值有正、有负、有0,返回子矩阵的最大累加和。 思路: 代码: 结果: 阅读全文
posted @ 2019-01-20 17:15 |旧市拾荒| 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个数组arr,返回子数组的最大累加和。例如arr = {1,-2,3,5,-2,6,-1};所有的子数组中[3,5,-2,6]可以累加出最大的和12,所以返回12。 代码: 结果: 注意:上面的代码没有考虑数组全为负数的情况,如果数组全为负数的话,返回数组的最大值即可。 阅读全文
posted @ 2019-01-20 15:40 |旧市拾荒| 阅读(334) 评论(0) 推荐(2) 编辑
摘要: 题目:给定一个N*N的矩阵matrix,在这个矩阵中,只有0和1两种值,返回边框全是1的最大正方形的边长长度,例如: 思路:直接枚举,根据阶数递减扫描,每一阶都要遍历所有数组,根据每一个点扫描这个点向右向下向左向上途经的每一个数据能不能构成一个边框全是1的正方形。 代码: 结果: 优化:这个算法的时 阅读全文
posted @ 2019-01-19 23:18 |旧市拾荒| 阅读(748) 评论(0) 推荐(1) 编辑
摘要: 基础题一:顺时针打印二维数组 代码: 结果: 基础题二:将0所在的行列清零 代码: 结果: 基础题三:Z形打印二维数组 代码: 结果: 阅读全文
posted @ 2019-01-19 16:27 |旧市拾荒| 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个字符串str1和str2,请判断str1中所有字符是否都存在于str2中(大众点评笔试题)。 思路:一看这题目很容易想到暴力破解,不过这样的话效率是很低的,消耗的时间为s1.length*s2.length。那我们可以先对s2进行排序然后二分查找,这样的话时间复杂度就会降低到s1.le 阅读全文
posted @ 2019-01-19 10:30 |旧市拾荒| 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。如输入数组{3,32,321},则输出这三个数字能排成的最小数字为:321323 代码: 结果: 总结:这道题告诉我们要灵活使用JavaAPI,在竞赛或工作中直接调用即可,就不用在手写了。 阅读全文
posted @ 2019-01-19 10:13 |旧市拾荒| 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 题目:求海量数据(正整数)按逆序排列的前k个数(topK),因为数据量太大,不能全部存储在内存中,只能一个一个地从磁盘或者网络上读取数据,请设计一个高效的算法来解决这个问题。 第一行用户输入K,代表要求得topK 随后的N(不限制)行,每一行是一个整数代表用户输入的数据 直到用户输入-1代表输入终止 阅读全文
posted @ 2019-01-18 22:38 |旧市拾荒| 阅读(924) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个无序数组长度arr,求出需要排序的最短子数组长度。如输入:arr={2,3,7,5,4,6},返回4,因为只有{7,5,4,6}需要排序。注意这儿题目是要求数组按照递增排序。 代码: 总结:拿到这种题目,需要仔细分析,然后发现规律,并且在分析的过程中要考虑各种测试用例,小数据、大数据、 阅读全文
posted @ 2019-01-18 17:04 |旧市拾荒| 阅读(266) 评论(0) 推荐(1) 编辑
摘要: 题目:给定已排序数组,不重复打印arr中所有相加和为k的不降序二元组?扩展题:三元组呢?如输入arr = {-8,-4,-3,0,2,4,5,8,9,10},k=10,那么该输出(0,10) (2,8) 。 思路:一看这道题目就很容易想到循环暴力破解,时间复杂度为n²。这样肯定不太理想,所以得换解法 阅读全文
posted @ 2019-01-18 11:24 |旧市拾荒| 阅读(529) 评论(0) 推荐(1) 编辑
摘要: 基于比较的排序: 基础排序: 冒泡排序:谁大谁上,每一轮都把最大的顶到天花板 效率太低——掌握swap。 选择排序:效率较低,但经常用它内部的循环方式来找最大值和最小值。 插入排序:虽然平均效率低,但是在序列基本有序时,它很快,所以也有其适用范围。 希尔排序(缩小增量排序):是插排的改良,对空间思维 阅读全文
posted @ 2019-01-18 10:23 |旧市拾荒| 阅读(343) 评论(0) 推荐(0) 编辑