自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

转载 排序算法总结

参见:http://blog.csdn.net/mark_lq/article/details/44936783

2017-04-08 21:34:06 230

原创 链表的反转(递归实现和非递归实现)

方法一:非递归实现,使用三个指针。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

Hadoop-Eclipse-Plugin-2.7.3,其中包含hadoop-eclipse-plugin-2.7.3.jar和Windows-Eclipse下配置Hadoop Map/Reduce开发环境所需的相关文件。

2017-03-09

c语言输入年月日且能防止错误输入

// 999.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a,i,c,n; //定义年份,月份,日期,总天数,总天数除以的余数 int b1=31,b3=31,b5=31,b7=31,b8=31,b10=31,b12=31; int b4=30,b6=30,b9=30,b11=30,b2; //定义每月天数 printf("请输入年月日:\n"); scanf("%d,%d,%d",&a,&i,&c); //输入年份,月份,日期 if((a0!=0&&a%4==0)||(a%400==0)) b2=29; //闰年,二月有29天 else b2=28; //非闰年,二月有28天 if(a>0) { if(i>=1&&i<=12) { if(i==2) //若输入的为二月...(防止输入像2001/2/30这样的错误日期) { if (c<=b2) { n=b1+c; } else printf("输入的日期有误.\n"); } else { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) //若输入的为31天的几个月...(防止输入像2001/3/33这样的错误日期) { if(c<=31) { switch(i) { case 1:n=c;break; case 3:n=b1+b2+c;break; case 5:n=b1+b2+b3+b4+c;break; case 7:n=b1+b2+b3+b4+b5+b6+c;break; case 8:n=b1+b2+b3+b4+b5+b6+b7+c;break; case 10:n=b1+b2+b3+b4+b5+b6+b7+b8+b9+c;break; case 12:n=b1+b2+b3+b4+b5+b6+b7+b8+b9+b10+b11+c;break; } } else printf("输入的日期有误.\n"); } else { if(i==9||i==4||i==6||i==11) //若输入的为30天的几个月...(防止输入像2001/4/31这样的错误日期) { if(c<=30) { switch(i) { case 4:n=b1+b2+b3+c;break; case 6:n=b1+b2+b3+b4+b5+c;break; case 9:n=b1+b2+b3+b4+b5+b6+b7+b8+c;break; case 11:n=b1+b2+b3+b4+b5+b6+b7+b8+b9+b10+c;break; } } } else printf("输入的日期有误.\n"); } } printf("该日是该年的第%d天\n",n); } else printf("输入的日期有误.\n"); } else printf("输入的日期有误.\n"); return 0; }

2013-05-14

空空如也

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

TA关注的人

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