自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

转载 linked-list-cycle-ii-LeetCode

linked-list-cycle-ii题目描述Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull. Follow up: Can you solve it without using extra space?思路设置两个指针node...

2016-08-14 13:57:00 93

转载 reorder-list-LeetCode

reorder-list题目描述Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do this in-place without altering the nodes' values. For example, Given{1,2,3,4}...

2016-08-14 13:35:00 103

转载 sum-root-to-leaf-numbers-LeetCode

sum-root-to-leaf-numbers题目描述Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number. An example is the root-to-leaf path1->2->3which represent...

2016-08-13 22:41:00 127

转载 binary-tree-maximum-path-sum-LeetCode

binary-tree-maximum-path-sum题目描述Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. For example: Given the below binary tree, 1 / \ 2...

2016-08-13 22:39:00 101

转载 机器人的运动范围-剑指Offer

机器人的运动范围题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路...

2016-08-05 20:33:00 78

转载 矩阵中的路径-剑指Offer

矩阵中的路径题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,...

2016-08-05 20:31:00 65

转载 滑动窗口的最大值-剑指Offer

滑动窗口的最大值题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, ...

2016-07-31 10:48:00 105

转载 数据流中的中位数-剑指Offer

数据流中的中位数题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。思路我们可以用数组存,每次取中位数时需要排序我们也可以用平衡二叉树存,不过构造树的过程很复杂我们也可以用大小堆存,不过也不简单最后我选择用java里...

2016-07-31 10:18:00 72

转载 二叉搜索树的第k个结点-剑指Offer

二叉搜索树的第k个结点题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如,5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。思路对于二叉搜索树,中序遍历的结果是按照顺序来的,我们设置一个变量用来计数,递归的遍历树,如果到了第k个,则把那个数取出来,我在这用的是ArrayList来存储那个结点还可以在递归方法中直接返回...

2016-07-30 23:18:00 62

转载 序列化二叉树-剑指Offer

序列化二叉树题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路序列化就按先序遍历,遇到空指针也要存下来,递归调用,StringBuilder反序列化是同样的递归调用,不过要考虑参数的传递,生成的TreeNode要返回注意:对Sting[]的遍历,每次递归都要往后遍历一个字符,如果将这个位置信息point通过参数传入的话,就会造成函数无法正常遍历Stri...

2016-07-30 22:39:00 62

转载 按之字形顺序打印二叉树-剑指Offer

按之字形顺序打印二叉树题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路根据题意,每行的节点的访问顺序是相反的,我们可以用两个栈来隔行存储,一个栈中根据“左结点->右结点”的顺序访问另一个栈的栈顶元素,而另一个栈根据“右子树->左子树”的顺序访问另一个...

2016-07-30 21:01:00 79

转载 把二叉树打印成多行-剑指Offer

把二叉树打印成多行题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路都是从左往右打印,我们可以使用队列若要一行一行区别开来打印,我们可以用两个队列也可以用一个队列,然后用两个标志位来标注哪些是属于一行里的结点,一个指针指向下一行的最后一个进队列的(point),一个指针指向上一行最后一个进入队列的(end),当出队列到end时,打印上...

2016-07-30 15:48:00 79

转载 对称的二叉树-剑指Offer

对称的二叉树题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路先序遍历二叉树的顺序为“根->左->右”,我们定义个跟先序遍历对称的遍历顺序“跟->右->左”,如果这两个遍历的结点对应相等,则是对称二叉树注意:因为叶子结点的左右子树在遍历结果中无法根据先后顺序区分,所以我...

2016-07-30 15:31:00 67

转载 二叉树的下一个结点-剑指Offer

二叉树的下一个结点题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路当该结点有右子树时,下一个结点就是右子树中最左的那个结点当该结点没有右子树,而且是父节点的左子树,那下一个结点就是父节点当该结点没有右子树,而且是父节点的右子树,那就向上寻找直到是某个父节点的左子树...

2016-07-30 15:09:00 58

转载 删除链表中重复的结点-剑指Offer

删除链表中重复的结点题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路需要两个指针,一个指向前一个节点preNode,另一个指向当前节点node,如果遇到相等的节点,node向后移动,pr...

2016-07-22 20:24:00 93

转载 链表中环的入口结点-剑指Offer

链表中环的入口结点题目描述一个链表中包含环,请找出该链表的环的入口结点。思路若该链表存在环,设置两个指针pSlow和pFast,pSlow每次走一步,pFast每次走两步,当pFast追上pSlow的时候,pFast比pSlow多走的正好是pSlow走的也就是环所包含的节点的个数。所以,第二次走,一个从头结点开始,另一个从相遇节点开始,最终会在环的入口节点相遇...

2016-07-21 20:58:00 73

转载 字符流中第一个不重复的字符-剑指Offer

字符流中第一个不重复的字符题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输入描述如果当前字符流没有存在出现一次的字符,返回#字符。思路模拟一个哈希表,长度为256,索引为字符的编码...

2016-07-21 20:35:00 65

转载 表示数值的字符串-剑指Offer

表示数值的字符串题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路数值的结构是'+/-' + '整数' + '.' + '整数' + 'E/e' + '+/-'...

2016-07-20 21:01:00 60

转载 正则表达式匹配-剑指Offer

正则表达式匹配题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配思路当遇到'.'的时候,任何字符都匹配,好处理当...

2016-07-20 20:51:00 54

转载 构建乘积数组-剑指Offer

构建乘积数组题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...*A[i-1]A[i+1]...*A[n-1]。不能使用除法。思路若一个个的去相乘,复杂度为O(n2)不能用除法,我们可以根据规律创建一个矩阵,把B[]分成两部分,分为A[0]A[i-1]和A[i+1]A[n-1]...

2016-07-19 20:57:00 47

转载 数组中重复的数字-剑指Offer

数组中重复的数字题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。思路可以使用先排序在遍历,这个的排序复杂度为O(nlogn)可以使用一个哈希表...

2016-07-19 20:41:00 56

转载 不用加减乘除做加法-剑指Offer

不用加减乘除做加法题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路我们可以考虑使用二进制的位运算先异或(不进位),再做位与运算,等到要进位的位,左移一位得出进位,再进行一次加法的流程循环下来,直到不产生进位为止代码public class Solution { public int Add(int n...

2016-07-16 15:58:00 48

转载 左旋转字符串-剑指Offer

左旋转字符串题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路借助于字符串翻转,若要左旋转前n个字符串,就先翻转整个字...

2016-07-15 20:54:00 58

转载 翻转单词顺序列-剑指Offer

翻转单词顺序列题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他...

2016-07-15 20:47:00 57

转载 和为S的连续正数序列-剑指Offer

和为S的连续正数序列题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描...

2016-07-13 20:26:00 42

转载 和为S的两个数字-剑指Offer

和为S的两个数字题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述对应每个测试案例,输出两个数,小的先输出。思路从两头开始遍历数组,若和小于sum,left++,若和大于sum,right--两头的数的乘积比中间的数的乘积小代码import j...

2016-07-13 20:11:00 57

转载 数组中只出现一次的数字-剑指Offer

数组中只出现一次的数字题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路先考虑一个数组里只有一个数出现一次,其他两个数都出现两次的情况:一个数跟自己异或后为0,一个数组里只有一个数出现一次其他两次,挨个异或后最后得到的结果就是只出现一次的那个数。我们把这个数组分为两部分,每部分只有一个数只出现一次:我们分的时候...

2016-07-13 19:54:00 39

转载 平衡二叉树-剑指Offer

平衡二叉树题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路在计算二叉树的深度的基础上加以判断是否是平衡二叉树用后序遍历,在遍历一个节点之前我们已经遍历了他的左右子树,在遍历每个节点的时候记录他的深度,当该子树是平衡二叉树的时候我们返回它的深度,若不是则返回-1代码public class Solution { public bool...

2016-07-10 10:46:00 46

转载 二叉树的深度-剑指Offer

二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路递归遍历二叉树,返回左右子树中深度比较大的子树。代码/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode rig...

2016-07-10 10:29:00 51

转载 数字在排序数组中出现的次数-剑指Offer

数字在排序数组中出现的次数题目描述统计一个数字在排序数组中出现的次数。思路处理已排好序的数组,考虑用二分查找的思想用二分查找找到这个数出现的第一个位置,再找到出现的最后一个位置,可得这个数出现几次,这样的时间复杂度为O(logn)注意考虑数组中没有出现该数的情况代码public class Solution { public int Ge...

2016-07-09 18:52:00 79

转载 两个链表的第一个公共结点-剑指Offer

两个链表的第一个公共结点题目描述输入两个链表,找出它们的第一个公共结点。思路若用暴力比较,一个个的节点比较,时间复杂度为O(n2),不可取根据题意,两个链表若有公共节点,最终要连起来,像一个Y形,所以我们从后往前遍历,但是单向链表只能从前往后,所以这符合“先进后出”,可以用两个辅助栈也可以不用辅助栈,我们先将两个链表遍历一遍,获取长度大小,然后从长的先开始遍历...

2016-07-09 18:03:00 52

转载 数组中的逆序对-剑指Offer

数组中的逆序对题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。思路如果扫描整个数组,每个数字跟后面的数字比较大小,整体的复杂度是O(n^2)可以利用归并排序的算法的思想,在排序的同时判断前后两个子序列中存在的逆序对,都是从后往前排,如果前面的数大于后面的数,因为都是已经排好序的所以...

2016-07-05 20:47:00 54

转载 第一个只出现一次的字符位置-剑指Offer

第一个只出现一次的字符位置题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始思路每个字符都做对比的时间复杂度为O(n2),所以我们创建一个哈希表来存储每个字符对应的出现次数,扫描一次存储次数,扫描第二次找出第一个只出现一次的字符,时间复杂度O(n)牺牲空间换取时...

2016-07-05 20:07:00 105

转载 丑数-剑指Offer

丑数题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路不用计算每一个整数是不是丑数,其实下一个丑数是前某个丑数乘2或3或5得到的。我们用一个数组按顺序存下每一个丑数,然后根据这些丑数计算下一个对乘2而言,肯定存在某个丑数T2...

2016-07-04 20:54:00 66

转载 把数组排成最小的数-剑指Offer

把数组排成最小的数题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路把两个int类型的数拼起来可能会比较大,溢出,我们可采用字符串来表示,处理大数问题将数字转化为字符串,然后比较字符串的大小,此处的大小指的是:若str1+str...

2016-07-04 20:19:00 42

转载 整数中1出现的次数(从1到n整数中1出现的次数)-剑指Offer

整数中1出现的次数(从1到n整数中1出现的次数)题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。思路根据数字排列规律,逐个判断每位上...

2016-07-03 13:29:00 72

转载 连续子数组的最大和-剑指Offer

连续子数组的最大和题目描述输入一个整数数组,数组里有整数也有负数。数组中一个或连续的多个整数组成一个数组。求所有子数组的和的最大值。要求时间复杂度为O(n)思路我们可以举例分析数组的规律,用一个变量来存储最大值,另一个变量存储当前的和,若当前和为负值,则后面加的和都会比当前的小,所以当为负值时把当前的和设置为0重新开始计算我们也可以通过动态规划的方法来解决这个问题...

2016-07-03 12:48:00 50

转载 最小的K个数-剑指Offer

最小的K个数题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路可以用快速排序的思想,分块,直到分出前k个为止,前k个不一定是按顺序的,注:这个方法需要改变数组可以借助一个k容量的辅助空间,最大堆或红黑树,这个方法处理大数组小k的情况比较合适,且不用改变原始数组代码imp...

2016-07-02 14:44:00 48

转载 数组中出现次数超过一半的数字-剑指Offer

数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路若一个数出现的次数超过长度的一半,那么这个数出现的次数比数组里的其他数都多用num来存数组的数,times来存次数,...

2016-07-02 13:39:00 53

转载 字符串的排列-剑指Offer

字符串的排列题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。输入描述输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路把字符串分成两部分,一部分是第一个字符,另一个部分是后...

2016-06-30 20:49:00 49

空空如也

空空如也

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

TA关注的人

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