- 博客(17)
- 资源 (3)
- 收藏
- 关注
原创 使用阻塞队列实现生产者-消费者模式——Java实现
阻塞队列是一种基于数组实现的阻塞队列,它在构造时需要指定容量。当试图向满队列中添加元素或者从空队列中移除元素时,当前线程会被阻塞。通过阻塞队列,我们可以按以下模式来工作:工作者线程可以周期性的将中间结果放入阻塞队列中,其它线程可以取出中间结果并进行进一步操作。若工作者线程的执行比较慢(还没来得及向队列中插入元素),其他从队列中取元素的线程会等待它(试图从空队列中取元素从而阻塞);若工作者线程执行较
2017-04-17 22:05:08 934
原创 求字符串的最长重复子串——Java实现
要求:求一个字符串的最长重复子串思路:使用两个指针,两个指针的间隔从1,2,3...依次增大, 同时向右移动两个指针,在移动的过程中判断指针位置的字符是否相同,并记录最长子串的长度。Java代码:public class Solution { // 求解字符串中的最长重复子串 public static String maxRepat(String input) {
2017-04-17 19:39:55 10469 1
原创 求两个字符串的最长公共子序列——Java实现
要求:给定字符串1和字符串2,要求找出两个字符串的最长公共子序列。例如,字符串1=“helloworld”,字符串2=“hwewegallgeo”,那么两者的最长公共子序列为“hello”思路:参见:http://www.cnblogs.com/zhangchaoyang/articles/2012070.html使用一个二维数组datas保存中间结果;使用另外一个二维数组index保存路
2017-04-17 16:08:22 5681 1
原创 求两个字符串的最长公共子串——Java实现
要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的)方法一: 对于较短的那个字符串,假设其长度为n,依次找到它的长度为n, n-1, n-2....1的若干的子串,若另外那个较长的字符串包含了较短字符串的某个子串,则找到了二者的最长公共子串。Java代码如下:public class Solution
2017-04-17 15:06:37 29948 9
原创 今日头条面试题(代码题)—— 查找字符串B的字符任意一种组合是否是字符串A的子串
题目要求:给定字符串A,B,其中B字符串不包含重复字符。 假设A="adcaaabcab", B="abc", 可知B中包含的字符的所有组合方式有以下6种:abc acb bac bca cab cba;只要A字符串的某个子串是以上6种情况种的任何一种,返回true, 如果这6种组合方式都不是A的某个子串,返回false。要是时间复杂度要足够低。思路:首先肯定不能使用穷举B中字
2017-04-12 22:13:07 2145
原创 在逆转数组中寻找最小元素——Java实现
思路:使用左右两个指针,左指针最初指向0,右指针指向最后一个元素。根据左右指针所指的数据和中间指针所指数据的大小关系移动指针。(注意:如果左右指针只相差1,需要特殊处理)Java代码如下:public class Solution { // 在left~right 之间顺序查找最小元素 public static int findMinNum(int[] nums, in
2017-04-10 20:50:55 576
原创 2Sum -- Java实现(3Sum 4Sum)待补充
思路:使用头尾指针Java代码实现:import java.util.Arrays;import java.util.LinkedList;import java.util.List;class Pair{ int x; int y; Pair(int xParam, int yParam){ x = xParam; y = yParam; }}pub
2017-04-10 20:01:51 749
原创 使用归并思想查找数组中的逆序对的数量——Java实现
使用二分归并思想,一个数组的逆序对的数量 = (构成逆序对的数字都在左半部分)左半部分逆序对的数量 + (构成逆序对的数字都在右半部分)右半部分逆序对的数量 + (构成逆序对的数字左半部分一个,右半部分一个)左右两部分的逆序对的数量。Java代码如下:public class Solution { // 使用归并思想统计数组中的逆序对 public static int
2017-04-10 19:28:14 637
原创 使用String模拟大数加减乘除(除法和取余待补充)
加减:模拟手工计算过程。乘:模拟手工计算过程(乘数B的每一位数字和乘数A相乘的时候使用连续n次加法进行模拟)除:连续做减法,直到差值出现负号(注:代码未经过充分测试,重点是记录下思想) Java代码如下: import java.math.BigInteger;public class Solution { // 将string转化为指定的长度 public ...
2017-04-10 15:49:29 2873
原创 使用两个栈实现队列
思路:使用两个栈,一个栈(栈1)用于保存输入,另一个栈(栈2)用于将输入倒序保存。当要想向队列中插入一个元素时,直接将元素插入到栈1中;当想从队列中获取一个元素时,首先判断整个队列是否为空,若不为空,判断栈2是否为空,若不为空,返回栈顶元素即为队列的第一个元素;若栈2为空,则将栈1中的元素全部压入栈2,再将栈2的栈顶元素弹出即可。Java代码如下:import java.util.
2017-04-09 09:37:11 362
原创 根据前序遍历和中序遍历重建二叉树
参见:http://blog.csdn.net/xiaoyi357/article/details/61640226
2017-04-08 21:49:55 277
原创 链表的反转(递归实现和非递归实现)
方法一:非递归实现,使用三个指针。Java代码如下:package com.yiguy.test;class Node{ int data; Node next; Node(){ } Node(int dataParam){ this.data = dataParam; this.next = null; }}public class List {
2017-04-08 21:02:21 303
原创 从二维数组中查找某个元素
题目:有一个二维数组,二维数组的每一行从左到右数据递增,二维数组的每一列,从上到下递增。在这样的二维数组中查找指定元素,返回其下标。思路:首先将待查找的元素q与二维数组的右上方的元素e进行比较,如果e=q,则找到了指定元素,返回其坐标;若e>q,则元素e所在的列可以排除,因为该列元素都比q大;若eJava代码如下:class Point{ int x; int y;
2017-04-08 18:53:24 5324
原创 今日头条2017春招笔试题——绘制括号序列
(注:题解来自于“今日头条校园”微信公众号)题意:给定一个合法的括号序列,以字符矩阵的形式翻转后输出。题解:先预处理每一个括号的深度,从而推出应打印的括号的大小,剩下的就是扫一遍处理下打印细节了。Java代码实现:import java.util.LinkedList;import java.util.List;public class Test { //
2017-04-08 16:56:38 1234
原创 今日头条2017春招研发岗笔试题——Paragraph
(注:题解方法来自于“今日头条校园”微信公众号)题意:给定一个英文段落(包含n个句子)和m次查询,每次给定一个句子,求段落中相同单词数量最多的句子。各个英文句子不包含标点,大小写不敏感。题解:一种简单的做法是对原文中的每个英文句子,都预处理包含的单词集合。对于每次查询,枚举句子中的单词到各个set查找是否存在,随后统计出现的次数取max即可。Java代码实现:import
2017-04-08 13:28:55 2432
原创 找出函数的最宽尖峰
此题为2017年今日头条春招研发岗笔试题。(思路为“今日头条校园”公众号提供的解法) 题目要求:求给定数列A中先升后降(必须是先升后降,只升不降或者只降不升都不符合条件;输入的数组不存在相邻两个数相等的情况)的最长连续子序列,要求O(n) 思路:预处理使得up[i]表示以A[i]为结尾的连续最长上升序列的长度、down[i]表示A[i]为起始的连续最长下降子序列的长度,那么答案实际上就是m
2017-04-08 09:27:06 854
geckodriver-v0.15.0-win64
2017-03-20
Hadoop-Eclipse-Plugin-2.7.3
2017-03-09
c语言输入年月日且能防止错误输入
2013-05-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人