自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer刷题总结

花了三天时间刷完了牛客OJ上剑指offer对应的66道算法题,感觉有一半都是做过的原题,还有一些是十分经典的算法题。因为好多算法题的思路在以前LeetCode博客上都详细讲过,剑指offer对应的博客就很简略,基本上直接上代码了。三天来把一些自认为很熟悉的快排和归并又重新码了一遍,感觉还是很难一把bugfree写对。递归和动态规划基本上写是没什么问题,暴力的递归还是很熟练的,但精巧的DP有时候就是...

2019-02-26 22:27:35 832

原创 LeetCode--654. Maximum Binary Tree & 998. Maximum Binary Tree II

问题链接:https://leetcode.com/problems/maximum-binary-tree/https://leetcode.com/problems/maximum-binary-tree-ii/第一问:树构建的过程与以往序列化二叉树构件树的过程基本一致/** * Definition for a binary tree node. * public cl...

2019-02-25 15:38:45 151

原创 单调队列问题

问题:https://leetcode.com/problems/trapping-rain-water/解法有很多,但是最符合直觉的就是两端DP了,代码如下:class Solution { public int trap(int[] height) { int n=height.length,ret=0; if(height=...

2019-02-24 22:02:04 178

原创 LeetCode Contest--20190224

问题一:https://leetcode.com/problems/find-the-town-judge/十分有趣的问题,就是一个图的矩阵表示问题class Solution { public int findJudge(int N, int[][] trust) { int[][] adj=new int[N][N]; ...

2019-02-24 17:02:53 156

原创 剑指offer--求1+2+3+...+n

问题:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。这个问题其实意义不大,我实在想不到用java怎么做,看了讨论发现是在抖机灵,不过确实巧妙,也有必要了解一下程序执行的短路情况。这里正是运用这个特性来实现没有if的递归的。public class Solution { public i...

2019-02-23 21:16:24 130

原创 剑指offer--数据流中的中位数

问题:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。这个问题的解决算法感觉是整个剑指offer里最令人拍案叫绝的了,实现了O(logn)的插入和O(1)的 中位...

2019-02-23 21:14:11 188

原创 剑指offer--数组中的逆序对

问题:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。问题的实质就是归并排序,计算逆序对实际上就是计算归并排序过程中aux[j]<aux[i]逆序的情况数。思路是明明白白的,但就是写起来曲折异常,很有技巧性,这里不是单纯的归并排序,首...

2019-02-23 20:52:48 85

原创 剑指offer--表示数值的字符串

问题:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。这个问题应该是剑指offer里面最令人抓狂的问题了,被

2019-02-23 19:54:24 105

原创 剑指offer--最小的K个数

 问题:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。import java.util.ArrayList;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k...

2019-02-23 18:38:14 85

原创 剑指offer--把数组排成最小的数

问题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。这个问题在LeetCode里似曾相识,只是换汤不换药。import java.util.ArrayList;import java.util.Comparator;import java.util.Arr...

2019-02-23 14:03:22 84

原创 剑指offer--孩子们的游戏(圆圈中最后剩下的数)

问题:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直...

2019-02-23 13:58:44 109

原创 剑指offer--树的子结构

问题:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)这个问题还是蛮难的。public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean result=false; if(...

2019-02-23 13:06:18 96

原创 剑指offer--二维数组中的查找

问题:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。这个问题与https://leetcode.com/problems/search-a-2d-matrix/不一样,前者条件更弱一些,要注意区分。public class Solution {...

2019-02-23 11:29:00 78

原创 LeetCode--74. Search a 2D Matrix

题目链接:https://leetcode.com/problems/search-a-2d-matrix/本题在二维排序数组中寻找目标数字是否存在。注意到每一行是排好序的,并且每一行第一个元素比上一行最后一个元素大,可以推得最后一列是递增的。思路:两次二分法,用二分法先在最后一列中确定第一个大于等于target的数的行索引,再用二分法在该行确定第一个大于等于target的数的列索引,这样...

2019-02-23 11:12:55 141

原创 剑指offer--序列化二叉树

问题:请实现两个函数,分别用来序列化和反序列化二叉树。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }*/p...

2019-02-22 23:08:19 87

原创 剑指offer--平衡二叉树

问题:输入一棵二叉树,判断该二叉树是否是平衡二叉树。public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if(root==null) return true; return Math.abs( height(...

2019-02-22 23:06:09 75

原创 剑指offer--字符串的排列

问题:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。import java.util.ArrayList;import java.util.HashSet; public class Solution { public static A...

2019-02-22 23:04:51 79

原创 剑指offer--复杂链表的复制

问题:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。import java.util.HashMap; public class Solution { HashMap<Integer,Rando...

2019-02-22 23:03:50 74

原创 剑指offe--构建乘积数组

问题:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。public class Solution { public int StrToInt(String str) { if(str==null || st...

2019-02-22 23:02:19 135

原创 剑指offer--整数中1出现的次数(从1到n整数中1出现的次数)

问题:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。我的解法是:public class Solution { ...

2019-02-22 22:56:35 81

原创 剑指offer--机器人的运动范围

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

2019-02-22 16:49:16 89

原创 剑指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}, {2,3,[4,2,6],2,5,1...

2019-02-22 16:09:21 109

原创 剑指offer--平衡二叉树

问题:输入一棵二叉树,判断该二叉树是否是平衡二叉树。这是一个LeetCode上很熟悉的问题。public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if(root==null) return true; retu...

2019-02-22 14:54:46 141 1

原创 剑指offer--二叉树中和为某一值的路径

问题:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)。这个问题与LeetCode上的Path Sum II基本一致,只不过需要对结果进行排序。import java.util.ArrayList;import java.util.C...

2019-02-21 20:47:37 73

原创 剑指offer--二叉搜索树的后序遍历序列

问题:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence==null || sequen...

2019-02-21 19:54:28 75

原创 剑指offer--数组中只出现一次的数字

问题:一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。//num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int...

2019-02-21 17:17:53 79

原创 剑指offer--二叉树的下一个结点

问题:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next ...

2019-02-21 17:11:20 73

原创 剑指offer--和为S的连续正数序列

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

2019-02-21 17:09:45 80

原创 剑指offer--把二叉树打印成多行

问题:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNo...

2019-02-21 16:27:09 75

原创 剑指offer--字符流中第一个不重复的字符

问题:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。如果当前字符流没有存在出现一次的字符,返回#字符。import java.util.TreeMap;import java.util.HashMap;public clas...

2019-02-21 16:02:51 67

原创 剑指offer--两个链表的第一个公共结点

问题:输入两个链表,找出它们的第一个公共结点。注意这里两个链表相交可能是跳跃相交的,不仅仅可能是连续相交。import java.util.Stack;public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ...

2019-02-21 09:43:31 95

原创 剑指offer--跳台阶 & 变态跳台阶

问题一:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。public class Solution { public int JumpFloor(int target) { if(target==1) return 1; if(target==2) ...

2019-02-21 09:43:18 105

原创 剑指offer--扑克牌顺子

问题:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13...

2019-02-20 22:22:34 113

原创 剑指offer--调整数组顺序使奇数位于偶数前面

问题:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。public class Solution { /* 1 2 3 5 6 */ public void reOrderArray(int [] array) { int la...

2019-02-20 22:20:48 115

原创 剑指offer--左旋转字符串

问题:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!public class Solution { public String LeftRot...

2019-02-20 22:18:35 97

原创 剑指offer--翻转单词顺序列

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

2019-02-20 22:16:20 100

原创 剑指offer--两个链表的第一个公共结点

 /*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.Stack;public class Solution { public ListNode Fi...

2019-02-20 18:28:58 78

原创 剑指offer--数值的整数次方

public class Solution { public double Power(double base, int exponent) { if(base==0) return 0; if(exponent==0) return 1; double ret=1; boole...

2019-02-20 15:37:37 67

原创 剑指offer--用两个栈实现队列

队列时FIFO原则,而栈是FILO,问题已经提向我们使用两个栈来实现队列了,代码如下:import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack&l...

2019-02-20 14:28:36 61

原创 剑指offer--从尾到头打印链表

import java.util.ArrayList;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> ret=new ArrayList<>(); ...

2019-02-20 14:16:41 82

空空如也

空空如也

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

TA关注的人

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