自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jingsuwen1的博客

记录点滴

  • 博客(65)
  • 收藏
  • 关注

原创 腾讯——构造回文、字符移位、

题目一:构造回文给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子:abcdagoogle

2016-07-31 22:04:52 470

原创 一战通offer

题目一:关于split函数开头和结尾的空格对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。注:字符串开头的空格,split函数仍人当成分隔符

2016-07-31 19:56:18 3012

原创 去哪——寻找Coder

题目描述请设计一个高效算法,再给定的字符串数组中,找到包含"Coder"的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照"Coder"出现的次数递减排列,若两个串中"Coder"出现的次数相同,则保持他们在原数组中的位置关系。给定一个字符串数组A和它的大小n,请返回结果数组。保证原数组大小小于等于300,其中每个串的长度小于等于200。同时保证一定存在

2016-07-31 15:18:38 341

原创 网易——比较重量(图的广度优先搜索)

小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请

2016-07-30 20:21:52 3196

原创 网易——求二叉树最大叶子节点到最小叶子节点的距离

有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。给定二叉树的根节点root,请返回所求距离。import java.util.*;/*public class TreeNode { int val = 0; Tre

2016-07-30 19:44:50 1245

原创 树——在二叉树中找到两个节点的最低公共祖先LCA

首先利用自底向上的思路——如果遍历到当前节点是A/B中的任意一个,则向父节点汇报此节点,否则递归到节点为null时返回null值。具体情况如下几种:1.当前节点即为两个节点中的一个,此时直接向父节点返回当前节点;2.递归到null,返回null;3.当前节点不是两个节点中的一个,此时判断左右子树的返回结果:    。若左右子树均返回非空值,那么当前节点一定为所求节点,将当前节点

2016-07-30 10:44:12 776

原创 百度——罪犯转移、裁剪网格纸、钓鱼比赛、蘑菇阵

题目一:罪犯转移C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式? 输入描述:第一行数据三个整数:n,t,c(1≤n≤2e5,0≤t≤1e9,1≤c≤n),第二行按入狱时间给出每个犯人的罪行值ai(0≤ai≤1

2016-07-29 20:35:29 5506

转载 Executor(执行器)框架和Future框架

Future框架Future接口定义了对线程执行计算结果的获取或取消线程执行该任务等操作。两个重要的功能:1.获取结果。2.可取消性。Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由cancel 方法来执行。还提供了其他方法,以确

2016-07-29 13:55:46 3906

转载 生产者消费者模型——blocking queue和CountDownLaunch

BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会阻塞。 ArrayBlockingQueue和LinkedBlockingQueueArrayBlockingQueue是一个由数组支持的有界阻塞队列。在读写操作上都需要锁

2016-07-28 17:28:54 2839

转载 HashMap源码剖析

无论是在平时的练习还是项目当中,HashMap用的是非常的广,真可谓无处不在。平时用的时候只知道HashMap是用来存储键值对的,却不知道它的底层是如何实现的。一、HashMap概述  HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtabl

2016-07-27 19:52:07 1124

转载 Java的四种引用,强弱软虚,用到的场景

Java的四种引用,强弱软虚,用到的场景。 JDK1.2以前关于引用的解释,其存储的数值代表另外一块内存的起始地址(并根据类型决定数据占用了多少个字节),就称这块内存代表着一个引用。JDK1.2之后,对引用的概念进行了扩充:分为强引用strong reference,软引用soft,弱引用weak和虚引用phantom 四种引用。C++有析构函数这个东西,能够很好地在对象销毁前做一

2016-07-27 14:03:34 6921

原创 字符串匹配——Sunday算法

学习了一个新strstr算法,sunday算法。好了,sunday算法还真的很好理解,用下面的例子来说明吧:这个例子中上面的字符串是待查找字符串,下面的是子串。sunday的思想是这样的:首先i,j两个指针指示的位置(也就是从头开始匹配),当发现失配的时候就判断子串的后一位在母串的字符(在上面的例子中是空格字符,k标记处)是否在子串中存在?如果存在则将该位置和子串中的该

2016-07-26 20:28:49 2986

原创 奇虎360——最后一个字符(利用BufferedReader输入数据)

题目描述你要的最后一个字符就在下面这个字符串里,这个字符是下面整个字符串中第一个只出现一次的字符。(比如,串是abaccdeff,那么正确字符就是b了)题目要求输入文件体积较大,请使用一些快速的输入输出手段,不推荐使用cin/cout,对Java并不推荐使用Scanner直接读写。 输入描述:第一行,一个正整数T(T≤20) ,表示输入数据组数。之后T行

2016-07-26 15:39:44 578

原创 网易——小易的升级之路、炮台的攻击、扫描透镜

分析:题目都很简单,笔试中编程题值得注意的点:1.类名为public classMain{}2.因main方法为static的,所以所有的接口函数都要设为static。3.就是对数据的输入,严格按照题目要求的输入规则来。本题采用了Scanner进行测试数据的输入,注意Scanner对各种不同类型数据的输入和返回boolean的hasNext(),hasNextInt()方法。

2016-07-26 15:20:54 521

原创 二叉树中序遍历变型——折纸问题

题目描述请把纸条竖着放在桌子上,然后从纸条的下边向上方对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背面,这条折痕叫做“下”折痕 ;突起的方向指向纸条正面的折痕叫做“上”折痕。如果每次都从下边向上方对折,对折N次。请从上到下计算出所有折痕的方向。给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".测试样

2016-07-25 15:42:06 593

原创 边界都是1的最大正方形大小

题目:给定一个M*N的矩阵,在这个矩阵中,只有0和1两种值,返回边框全是1的最大正方形的边长长度。例如:              [0, 1, 1, 1, 1],             [0, 0, 1, 0, 1],            [0, 1, 1, 0, 1],             [0, 1, 1, 1, 1],              [0,

2016-07-24 20:42:28 1302

原创 和为s的连续正整数数列 and 未排序正数数组中和为s的最长子数组长度

题目一:输入一个正整数s,打印出所有和为s的连续正整数序列(至少有两个数)。两个下标small和big,可以看出small递增到s/2即可。import java.util.ArrayList;public class Solution { public ArrayList > FindContinuousSequence(int sum) { Arra

2016-07-23 22:20:51 473

原创 BFS、DFS——求最短通路值

题目:用一个整形矩阵matirx表示一个网络,1代表有路,0代表无路,每一个位置只要不越界,都有上下左右四个方向,求从左上角到右下角的最短通路值。例如,matrix为: 1 0 1 1 1 1 0 1 0 1 1 1

2016-07-23 20:35:57 1471

原创 二分查找——Median of two Sorted Arrays

本题为在两个排序数组中找第K大的数的一个特殊情况——第(A.length+B.length)/2大的数。使用并归的思想逐个比较找出满足要求的数的时间复杂度为O(N)。使用二分法比较A[K/2-1]和B[K/2-1],并思考这两个元素和第k大元素的关系。1.A[K/2-1] 2.若k/2-1超出了A的长度,则必取B[0]~B[k/2-1]。接下来考虑特殊情

2016-07-22 11:36:29 287

原创 二分查找——Wood Cut

题目:给定一个数组,数组中的数字代表原木的长度,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。样例有3根木头[232, 124, 456], k=7, 最大长度为114.注意木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度

2016-07-22 11:03:47 449

原创 二分查找——Search in Rotated Sorted Array

题目:在旋转数组中寻找数组,旋转数组在旋转前为不降序排序数组,可能有重复数字。若没找到,返回-1。public boolean search(int[] data,int target) { if(data == null||data.length == 0) return false; int left=0; int right=data.length-1;

2016-07-22 10:19:35 434

原创 二分查找——旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。import java.util.ArrayList;public class Solution {

2016-07-22 09:44:22 740

原创 二分查找——Find Peak Element

题目:给定一个矩阵,找出其中的峰值。矩阵满足num[i]!=num[i+1],矩阵中可能有多个峰值,返回其中之一即可(若要求出所有,则不能使用二分查找法)。另外,you may imagine that num[-1] == num[n] == 负无穷。例如:矩阵[1,2,3,1],返回3的下标2。            矩阵[1,2,3,4,5],返回5的下标4。public

2016-07-22 09:19:19 411

原创 二分查找——Search a 2D Matrix

题目: 给定了一个矩阵,该矩阵不仅每行,每列都递增,而且每行的首位比前行的末位数字大时,可看成一位数组,利用二分查找。例如矩阵为:int[][] data={{1, 3,  5,  7},                  {10,11,16,20},                  {23,30,34,50}};二维矩阵与一维矩阵下标对应的关系:下标为i和j的元

2016-07-22 09:04:12 348

原创 二分查找——Search Insert Position

题目:给定一个排序的数组和一个 target,若target在数组中找到,则返回下标,否则找出target要插入的index。例如: int[] array={1,3,5,6};     5->2;      2 ->1;      7->4;       0->0.值的注意的是,跳出while后的不同情况的判断。 public int serchInsert(int[]

2016-07-22 08:48:28 294

原创 未排序数组中累加和为给定值的系列问题

题目一:Zero Sum Subarray给定一整形数组,返回序列和为0的子数组的起始和结束下标。比如:int[] array={-3,1,2,-3,4};   返回(0,2)和(1,3)。题解:使用hashmap保存数组中从0开始到索引i的子段和,在将值push进map之前,先检查map中是否已经存在,若存在则表示找到一组。注意:map中的键值对key

2016-07-21 12:18:39 1405

原创 C的头文件和java的引包

1、如果你滥用include将导致你的目标文件很大,而java的import语句没有任何影响,你可以导入所有的包,但是编译后实际上只导入了必要的包。import其实就是打通一个路径,当你所需的东西在自己包里面找不到的时候,系统就会去找你import的路径。所以它和include 不一样,它不会导致你的目标文件很大的。  2、C语言里头的头文件里放的 还是源代码,而java引入的包是被编译过

2016-07-20 22:48:25 2003

原创 龙与地下城游戏问题

题目:给定一个二维数组,含义是一张地图,例如,如下矩阵:int[][] data={{-2,-3,3},                    {-5,-10,1},                    {0,30,-5}};游戏规则如下:    1.骑士从左上角出发,每次只能向下或向右走,最后达到右下角见到公主。    2.地图中每个位置代表骑士血量的变化,若为负数

2016-07-20 10:01:09 997

原创 位运算实现整数的加减乘除

题目:给定两个32位int型整数,可正可负可0,实现四则运算。注:位运算考虑溢出问题。add加法实现: public int Add(int num1,int num2) { int sum=num1; int carry=0; while(num2!=0) { sum=

2016-07-19 15:00:25 361

原创 fast power关于取模运算

运算规则模运算与基本四则运算有些相似,但是除法例外。其规则如下:(a + b) % p = (a % p + b % p) % p (1)(a - b) % p = (a % p - b % p) % p (2)(a * b) % p = (a % p * b % p) % p (3)题目:Calculate the an %

2016-07-19 12:02:12 432

原创 不要被阶乘吓倒

题目一求N!的末尾有多少个0?N!=1*2*3*...*(N-1)*N;      10的质数分解只有2和5,那么假设N!中通过质数分解,所能得到的2的个数为X,所能得到的5的个数为Y,则X和Y中较小的一个极为连乘中10的个数,也就得到了N!结果中末尾的0的个数。不难看出,X > Y在N!中是一定成立的,则问题转化为求Y。最简单的解法:int count=0;for(

2016-07-19 11:42:29 299

原创 位运算基础知识

位操作有按位与(&)、或(|)、非(~)、异或(^)、左移n位(> n)等操作。java中的“>>>”运算符将用“0”填充高位,“>>”用符号位填充高位,没有“左移操作“java中对移位运算右侧的参数要做相应的取模处理,比如int类型的数1有32位,那么"1 在移位运算时,byte、short和char类型移位后的结果会变成int类型,进行位操作时,不用再考虑原有类型的

2016-07-19 09:56:02 390

转载 Java中BitSet的实现

编程珠玑中第一篇讲的就是使用bitmap来排序大文件里面的数据。下面给出一个简单的BitMap实现。主要使用Byte数组。主要就是使用位运算来设置为某位的bit为1; Java代码  public class BitMap {            private byte[] bitMap = null;

2016-07-19 09:03:59 1514

转载 教你如何迅速秒杀掉:99%的海量数据处理面试题

作者:July出处:结构之法算法之道blog前言   一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名 :-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。    毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只

2016-07-18 20:08:17 273

原创 字符串——找到被指的新类型字符

题目:自定义了3种新的字符类型:1:单个小写字母,如‘a’;   2:大写+小写字母对,如'Ab' ;2:大写+大写字母对,如'AA' 。给定满足要求的字符串和整数,返回指定位置上的新类型字符。举例:"aaABCDEcBCg",    7       返回“EC”. public String piontNewChar(String s,int k) {

2016-07-18 16:55:31 332

原创 DFS——palindrome-partitioning

题目:给定一个字符串,将字符串分成多个部分,满足每一部分都是回文串,请输出所有可能的情况。       该问题的难度比较大,很可能第一次遇到没有思路,这很正常。下面我们一点点分析,逐步理清思路。先不考虑所有的情况,针对一个符合条件的划分,每一部分都是一个回文子串,而且各部分的长度不固定。也即每一部分都是原始字符串的一个子串,且满足回文条件。所有的划分都满足上述条件,所以这就启发我们

2016-07-17 22:00:28 634

原创 动态规划——回文最小分割数(palindrome-partitioning-ii)

题目:给定一个字符串str,返回把str全部切成回文子串的最小分割数。举例:str="ABA" ,不需要切割,返回0;str="ACDCDCDAD",最少需要切两次,比如"A","CDCDC","DAD",所以返回2.解题思路:动态规划问题。  dp[i] - 表示子串(0,i)的最小回文切割,则最优解在dp[s.length-1]中。(0,i)的子串中

2016-07-17 21:06:26 12501 2

原创 求最大子矩阵的大小 (maximal-rectangle)

题目:给定一个整形矩阵map,其中的值只有0和1两种,求其中全是1的所有矩阵区域中,最大的矩形的面积。例如:图中是一个4 × 6的矩形,画出红色的是我们要找到的区域,结果返回为 4.      仔细观察发现:因为我们要找的是矩形,所以它一定是以某个行元素开始的,这样的话,其实我们要找到的某个矩形就转换成以某一个行开始的 histogram的最大矩形问题了

2016-07-17 19:58:39 676

转载 卡特兰数的概念

卡特兰数,一种有着特殊规律的数列,先用一道题来引出卡特兰数。10个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问有多少种排列方式?我们可以先把这10个人从低到高排列,然后,选择5个人排在第一排,那么剩下的5个人肯定是在第二排。用0表示对应的人在第一排,用1表示对应的人在第二排,那么含有5个0,5个1的序列,就对应一种方案。比如00000111

2016-07-17 17:04:12 358

原创 java 知识点总结4

class A {}class B extends A {}class C extends A {}class D extends B {}Which four statements are true ?正确答案:ACDG  你的答案:ADEG(错误)The type Listis assignable to List.The type Listis

2016-07-17 16:33:56 315

空空如也

空空如也

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

TA关注的人

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