自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (5)
  • 收藏
  • 关注

原创 旋转数组的最小数字

1、链接:旋转数组的最小数字 来源:牛客网 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。2、思路:直接用了遍历,二分法在上面链接中有,后续实现; 3、代码:pub

2017-09-30 08:42:05 307

原创 滑动窗口的最大值

1、链接:滑动窗口的最大值 来源:牛客网 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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},

2017-09-27 15:11:45 341

原创 二叉搜索树的第k个结点

1、链接:二叉搜索树的第k个结点 来源:牛客网 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。2、思路:中序遍历 3、代码:public class KthNode { int pos = 0; TreeNode res = null; boolean isContine

2017-09-27 12:49:14 332

原创 对称的二叉树

1、链接:对称的二叉树 来源:牛客网 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2、思路:采用递归 3、代码:boolean isSymmetrical(TreeNode pRoot) { boolean res = true; if (pRoot == null) re

2017-09-27 12:27:09 314

原创 两个链表的第一个公共结点

1、来源链接:两个链表的第一个公共结点 来源:牛客网 输入两个链表,找出它们的第一个公共结点。2、思路:节点相同,说明它们后面的接着的节点也是一模一样的。另一种思路:求出长度,然后让长的先走长度差。3、代码:public static void main(String[] args){ ListNode list1 = new ListNode(1); ListNo

2017-09-27 10:03:18 254

原创 二进制中1的个数

1、链接:二进制中1的个数 来源:牛客网 热度指数:143832时间限制:1秒空间限制:32768K 算法知识视频讲解 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。2、代码: public int NumberOf1(int n) { int res = 0; int temp = 1; int i = 0;

2017-09-27 09:58:07 192

原创 数值的整数次方

1、链接:二进制中1的个数 来源:牛客网 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。2、代码:public int NumberOf1(int n) { int res = 0; int temp = 1; int i = 0; for(i = 0; i < 32; i++){ if((

2017-09-25 20:46:13 242 1

原创 和为S的两个数字

1、链接:和为S的两个数字 来源:牛客网 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 2、类似之前矩形转为三角形的题目,设置两个指针,从首尾开始向中间迫近,最小的值相离最远。 3、代码:public ArrayList<Integer> Find

2017-09-25 20:25:58 208

原创 数组中只出现一次的数字

1、来源:数组中只出现一次的数字 来源:牛客网 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 2、思路:任意两个相同的数异或为0,所以 数组的两个不同的数 异或操作得到的值 和所有数异或的值相同,该值肯定不为0;根据该值将数组分为两部分,两个不同的值在不同的部分中3、代码:public void FindNumsAppearOnce(int

2017-09-25 19:51:00 218

原创 第一个只出现一次的字符

1、链接:第一个只出现一次的字符 来源:牛客网 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置2、以类似’a’的字母作为计数数组的下表,计数完成后,再进行遍历,第一个计数为1的下表即是所求。 3、代码:public int FirstNotRepeatingChar(String str) { if(str == nu

2017-09-25 19:11:53 215

原创 反转链表

1、来源:反转链表 来源:牛客网 输入一个链表,反转链表后,输出链表的所有元素。2、递归,一直深入到链尾,然后又一步步回退到第一步。还有其它方法,待续。 3、代码:public class ReverseList {public static void main(String[] args){ ListNode list1 = new ListNode(1);

2017-09-25 18:51:48 203

原创 栈的压入、弹出序列

1、这里写链接内容 来源:牛客网 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)2、代码:“` public boolean IsPopOrde

2017-09-25 15:27:37 207

原创 合并两个排序的链表

1来源:合并两个排序的链表 来源:牛客网 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。2、代码:public class MergeLink { public static void main(String[] args){ ListNode list1 = new ListNode(1); ListNode t

2017-09-25 13:53:17 194

原创 链表中倒数第k个结点

1、来自牛客:链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点。 2、思路,设置两个指针,一个位置为0,另一个位置为k-1,同时进行一步步探测,当在k-1的指针走到末尾时,位置为0的指针为倒数第k的位置。 3、代码:public ListNode FindKthToTail(ListNode head,int k) { int i, pos = k - 1;

2017-09-25 01:34:42 250

原创 调整数组顺序使奇数位于偶数前面

1、链接:调整数组顺序使奇数位于偶数前面 来源:牛客网 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2、思路:新建一个数组res,第一次遍历将奇数保存前面,再遍历一次将偶数保存到后面。3、代码: public void reOrderArray(int [] array

2017-09-25 01:08:57 254

原创 判断二叉搜索树是否是平衡二叉树

1、判断二叉搜索树是否是平衡二叉树 输入一棵二叉树,判断二叉搜索树是否是平衡二叉树。2、思路:采用递归,算出某次递归左右子树的高度,根据高度差来判断是否满足要求,在递归中有一次高度差大于1时,即不满足。3、代码: public boolean IsBalanced_Solution(TreeNode root) { if(root == null) re

2017-09-25 00:43:25 832

原创 从尾到头打印链表

1、来源:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值。 2、思路:第一种方法,利用栈的先进后出特性;第二种方法,递归第三种方法,反转链表,还没尝试,待续3、代码:/* * 利用栈来实现 */ /*public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {

2017-09-24 23:38:15 198

原创 用两个栈实现队列

1、来源:用两个栈实现队列 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2、代码:public class QueueByStack { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public v

2017-09-24 23:05:55 175

原创 二叉树中和为某一值的路径

1、来源:二叉树中和为某一值的路径 来源:牛客网输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 3、思路:先序遍历的方法,当到达叶子节点时判断是否符合要求;保存路径的过程中,用一条公共的list保存每一条路径(保存到二维数组根据该list new一个来保存),一次递归完成后,记得将使用list.re

2017-09-24 17:40:00 299

原创 二叉搜索树的后序遍历序列

1、二叉搜索树的后序遍历序列 来源:牛客网 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。2、思路:后续遍历中,最后一个元素为根节点,小于根节点的元素在左子树,大于根节点的在右子树。3、代码:public boolean VerifySquenceOfBST(int [] sequence) {

2017-09-24 16:34:42 241

原创 由前序和中序数组重建二叉树

1、重建二叉树 来源:牛客网输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2、思路:先序第一个元素a为根节点,在中序数组中,a左边的元素为左子树,右边为右子树。左右子树放到递归中处理即可3、代码:private

2017-09-24 01:38:55 271

原创 二维数组中的查找

1、来源:二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2、思路:在这种有序类型的数组中,一个元素左上的元素都是更小的,右下的元素都是更大的。3、代码:public boolean Find(int target, int [][] array) {

2017-09-23 23:33:28 186

原创 把数组排成最小的数

1、题目来源,把数组排成最小的数: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。2、思路:例如存在int a,b;a和b谁前谁后使数更小,转换为比较str1,str2的大小,String str1 = “” + a + b;String str2 = “” + a

2017-09-23 23:05:59 194

原创 数字再排序数组中出现的次数

1、来源数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。2、二分查找,找出第一次出现k的位置first和最后一次出现k的位置last 3、代码:public int GetNumberOfK(int [] array , int k) { int first, last; first = getFirstPos(array,k);//获得k第一次

2017-09-22 23:13:57 192

原创 把二叉树打印成多行

1、来源:把二叉树打印成多行 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。2、代码:ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer>>(); Queu

2017-09-22 18:22:28 214

原创 求1+2+3+...+n

1、求1+2+3+…+n 来源:牛客网求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。2、递归结束的使用&&来解决 3、代码: public int Sum_Solution(int n) { Boolean a = (n!=0)&&((n += Sum_Solution(n - 1))

2017-09-22 16:48:41 444

原创 构建乘积数组

1、链接:构建乘积数组 来源:牛客网 给定一个数组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]。不能使用除法。2、思路,第一次遍历,将下三角每一行相乘后赋值给B数组,第二次遍历,将上三角乘到B中即可得到结果: 3、代码: public int[] multiply(int[] A) {

2017-09-22 15:51:24 200

原创 变态跳台阶

1、来自牛客 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 2、列出前5项得1、2、4、8、16。总结出规律即可。 3、代码: public int JumpFloorII(int target) { if(target <= 1) return target; re

2017-09-22 14:47:22 160

原创 二叉树的镜像

1、:链接 来源:牛客网操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \

2017-09-22 14:08:28 228

原创 斐波那契数列(迭代和递归)

1、迭代:public int fibonacci2(int n) { if(n == 0) return 0; if(n == 1) return 1; int res = 0; int temp1 = 0; int temp2 = 1; while(n-

2017-09-21 21:38:42 658

原创 数组中次数超过一半的数

1、题目描述(来自牛客,leetcode也有一样的) 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。2、思路:如果一个数pos在数组中的数目超过一半,任意取掉两个完全不同的数时,在这个数组pos的数目仍然超过一半在数组 3、代码:

2017-09-21 21:06:51 220

原创 二叉树的深度

1、题目描述(来自牛客,leetcode也有一样的题目Leetcode-104. Maximum Depth of Binary Tree): 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。2、思路:动态规划的思想:记子树i的层数为f(i),i 的左右子树分别为left、right则 f(i) = 1+max{f(left

2017-09-21 16:31:05 253

原创 最大连续子序列和-动态规划

1、题目描述(来自牛客): HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠

2017-09-21 15:27:27 294

原创 编程题目录(待整理)

编程题目录不出现+、-、*、/求解两数a,b之和 ,将 异或 记为c,与 记为d,若d为0则直接取c,若d不为零,则d右移1再加上cleetcode-371. Sum of Two Integers。最大连续子序列和-动态规划,记【以第i个元素结尾的子串和 最大值】为f[i],有状态转移方程f[i] = max{f[i-1]+array[i],array[i]},最大连续子序列和-动态规划二叉

2017-09-20 20:21:07 213

gradle-4.2-all.zip

gradle4.2

2019-07-10

elasticsearch-5.6.3.zip

elasticsearch5.6.3源码。

2019-07-10

一个简单的servlet容器

[深入剖析Tomcat]一书第二章中 一个简单的servlet容器实现

2017-04-02

chorm广告插件

chorm插件

2016-07-23

LC-3 Editor和LC-3 Simulator

1.LC-3 Editor :代码编辑和编译,支持二进制机器码程序、16进制机器码程序以及汇编语言作为程序输入并编译成可执行的目标文件代码(.obj)。 2. LC-3 Simulator :程序运行的仿真环境。可仿真执行目标文件代码,支持断点、单步执行等调试手段

2015-04-23

空空如也

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

TA关注的人

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