- 博客(89)
- 资源 (16)
- 收藏
- 关注
原创 判断一个二叉树是否是平衡二叉树
题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树(AVL):它又称为AVL树,它是一棵空树或者它的左右子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。public class BalanceTree { // 是否为平衡二叉树 static boolean isBalanced = true; private static in...
2019-12-19 09:48:35 338
原创 数组中出现次数最多的数字
public class MoreThanHalfSize { public static int[] array = {3, 2, 5, 2, 2, 2, 6, 7, 2}; /** * 方法四: * <p> * 思想:将一个目标元素和一个其它元素进行抵消,由于目标元素的数量大于其它元素的数量,故经过多次抵消后,剩下的元素即...
2019-11-29 09:27:43 1272
原创 数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。public class Offer39 { //找出第一个k的位置 private int getFirstK(int nums[], int k, int start, int end) { if ...
2019-11-26 17:14:56 202
原创 数组中数值和下标相等的元素
题目描述:假设一个单调递增的数组里的每个元素都是整数且是唯一的,请编程实现一个函数,找出数组中任意一个数值等于其下标的元素,例如,在数组{-3,-1,1,3,5}中数字3和它的下标相同。public class Offer39 { public static void main(String[] args) { int[] nums = {-3, -1, 1, 3,...
2019-11-26 15:45:53 180
原创 合成两个排序的链表(25)
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。public class Offer25 { public static Node25 Merge(Node25 list1, Node25 list2) { Node25 head; if (list1 == null) { return list2; } ...
2019-11-22 15:18:11 96
原创 调整数组顺序使奇数位于偶数前面21
题目:输入一个整数数组,实现一个函数来调整数组顺序使奇数位于数组前半部分,偶数位于数组后半部分。public class ReorderOddEven { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 2, 3, 5, 4, 6, 7, 9, 11, 12}; reorder(a...
2019-11-15 11:45:44 100
原创 删除链表中重复的结点18
题目描述:删除有序链表中的重复节点,返回头节点,例如1->1->2->2->3->4,返回3->4public class Offer18 { public static void main(String[] args) { ListNode node1 = new ListNode(1); ListNode ...
2019-10-08 13:42:08 124
原创 数值的整数次方16
题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。public static double powerWithExponent(double base, int exponent) { if (exponent == 0) { return 1; ...
2019-09-27 08:59:49 176
原创 旋转数组的最小数字11
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。public static void main(String[] args) { int[] array = {3, 4, 5, 1, 2}; ...
2019-09-10 17:19:15 87
原创 斐波那契数列10
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。斐波那契数列属于经典的递归问题,对于这题的求解,我们首先要知道斐波那契数列的状态转移式,即f[n]=f[n-1]+f[n-2],且在n=1或2时,f[n]=1。public static int feibolaqiByCircle(int n) { if (n < 0)...
2019-09-06 10:12:04 585
原创 用两个栈实现一个队列与用两个队列实现一个栈9
用两个栈实现一个队列public class Offer9 { public static void main(String[] args) { CustomQueue<Integer> customQueue = new CustomQueue(); customQueue.add(0); customQueue.ad...
2019-09-03 13:20:02 123
原创 二叉树的下一个节点8
题目描述:给定一棵二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别别指向左右子节点的指针,还有一个指向父节点的指针例如:这棵树的中序遍历是:D,B,H,E,I,A,F,C,G解题思路:(1)当节点的右子树不为空:节点的下一个节点就是这个节点的右子树中的最左子节点,也就是从右子节点出发一直沿着指向左子节点的指针,走到最后一个叶子节点就是此节点的下一个...
2019-09-03 08:44:58 112
原创 二维数组中的查找4
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public static boolean Find_2(int target, int[][] array) { if (array == null || array.length == 0 || (...
2019-08-28 18:55:03 107
原创 不修改数组找出重复的数字
题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为8的数组{2, 3, 5, 4, 3, 2, 6, 7},那么对应的输出是重复的数字2或者3。思路1:我们开辟一个新的数组,初始化为0,然后把原始数组每个数据的值作为下标,把新数组通过这个下标数据取出来,如果取出来是1,就...
2019-08-27 10:58:22 149
原创 快速排序
思路1:import java.util.Arrays;public class QuickSortTest { public static void main(String[] args) { int arr[] = {-9, 78, 23, -567, 0, 70, -1, 900, 4561}; System.out.println("...
2019-08-02 15:16:31 373
原创 希尔排序-老韩图解
package com.atguigu.sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class ShellSort { public static void main(String[] args) { //int[] ar...
2019-07-13 15:36:22 297
原创 String知多少
1、先看下a,b,c三个string有什么不同?String a = "hello";String b = new String("hello");final String c = "hello";答:a指向常量池,而b指向堆。在java中,遇到new关键字,即会在堆中创建对象。String b = new String("hello")时会先去常量池中找是否有"hello",如果常...
2019-07-05 17:46:50 177
原创 单链表反转
Nodeclass Node { private int Data;// 数据域 private Node Next;// 指针域【链域】,存储下一个节点 public Node(int Data) { this.Data = Data; } public int getData() { return ...
2019-06-24 17:13:02 108
转载 归并排序
基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方...
2019-05-28 16:38:20 83
原创 递归-跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解法一:使用循环的方法public static int test(int number) { int a = 1; int b = 2; int c = 0; if (number == 0) { return...
2019-05-25 16:30:59 208
原创 SpringBoot热部署(IntelliJ IDEA)
1、在项目pom.xml文件中添加spring-boot-devtools依赖和启动插件。添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> &...
2019-04-28 17:53:23 339
转载 单链表反转
要求很简单,输入一个链表,反转链表后,输出新链表的表头。 反转链表是有2种方法(递归法,遍历法)实现的,面试官最爱考察的算法无非是斐波那契数列和单链表反转,递归方法实现链表反转比较优雅,但是对于不了解递归的同学来说还是有理解难度的。递归法总体来说,递归法是从最后一个Node开始,在弹栈的过程中将指针顺序置换的。为了方便理解,我们以 1->2->3->4...
2019-04-25 13:35:21 151
原创 ElasticSearch安装教程(redhat6.5+ES6.7.0)
1、JDK的安装ES的运行依赖于JDK,所以必须先安装它,但是本教程主要是讲解ES的安装,所以JDK的安装在此省掉。但是需要在这里说明的是ES6之后的版本不能低于DK1.8,所以必须确保jdk1.8以上版本,否则后面会报JDK版本错误。2、解压安装包 tar -zxvf ./elasticsearch-6.7.0.tar.gz3、启动ES进入ES安装目录 cd elas...
2019-03-28 16:28:59 874
原创 数组中重复的数字
问题:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。public static void main(String[] args) { int[] array = { 6, 3, 1, 0, 2, 5, 3 }; duplicateNumber(array, arr...
2019-03-20 16:21:26 103
原创 数组和LinkedList反转
由于数组和LinkedList数据结构不同,所以采用了不同的算法。/** * @Title: reverseList * @Description: LinkedList反转 * @param list * @return 参数 * @throws */ public static LinkedList<Integer> rever...
2019-03-15 15:56:12 559
原创 字符串反转
描述:字符串反转,即把字符串"abcd"变为"dcba"public static void main(String[] args) { String str = "abc"; System.out.println(reverse6(str)); } public static String reverse6(String str) { int len = str.leng...
2019-03-15 14:34:21 192
原创 top k
问题:从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。1、Java基于TreeSet实现public static void main(String[] args) throws Exception, RemoteException { int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, ...
2019-03-14 18:09:22 213
转载 递归
何时使用递归一、算法说明递归来源于数学中的归纳法,归纳法是数学里的一种证明方法,它通常有以下两个步骤:证明当 n 等于某一个值(通常是限定范围内的第一个值)时命题成立;假设当 n = m 时命题成立,证明当 n = m + 1 时命题也成立。数学中的归纳法由已知推向未知由前推向后,而在编程中通常是给定 n 的值(如 n = m)求结果,这与数学中的归纳法在过...
2019-03-12 18:55:23 236
转载 elasticsearch面试
1、elasticsearch了解多少,说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段 。面试官:想了解应聘者之前公司接触的ES使用场景、规模,有没有做过比较大规模的索引设计、规划、调优。解答:如实结合自己的实践场景回答即可。比如:ES集群架构13个节点,索引根据通道不同共20+索引,根据日期,每日递增20+,索引:10分片,每日递增1亿+数据,每个通道每天索引大...
2019-02-25 13:23:42 306
转载 字典数据结构-FST(Finite State Transducers)
http://www.cnblogs.com/LBSer/p/4119841.html1 lucene字典 使用lucene进行查询不可避免都会使用到其提供的字典功能,即根据给定的term找到该term所对应的倒排文档id列表等信息。实际上lucene索引文件后缀名为tim和tip的文件实现的就是lucene的字典功能。  ...
2019-02-25 13:18:08 7960 3
原创 数据结构与算法(2)-直接选择排序
public static void main(String[] args) { int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1, 8 }; System.out.println("排序之前:"+Arrays.toString(a)); // 直接选择排序 for (int i = 0; i < a...
2019-02-20 14:13:39 146
原创 数据结构与算法(1)-直接插入排序
public static void main(String[] args) { int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1 }; System.out.println(Arrays.toString(a)); for (int i = 1; i < a.length; i++) { int...
2019-02-19 17:59:22 146
转载 Java常用的八种排序算法与代码实现
Java常用的八种排序算法与代码实现 排序问题一直是程序员工作与面试的重点,今天特意整理研究下与大家共勉!这里列出8种常见的经典排序,基本涵盖了所有的排序算法。1.直接插入排序 我们经常会到这样一类排序问题:把新的数据插入到已经排好的数据列中。将第一个数和第二个数排序,然后构成一个有序序列将第三个数插入进去,构成...
2019-02-18 13:49:51 136
原创 nio(3)-直接缓冲区和非直接缓冲区
1、非直接缓冲区:通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中2、直接缓冲区:通过 allocateDirect() 方法分配直接缓冲区,将缓冲区建立在物理内存中。可以提高效率缓冲区优缺点1、通过isDirect()方法可以查看缓冲区类型。2、直接缓冲区把数据写入到物理内存后,数据就不受应用程序控制,而由操作系统控制了,所以不易控制。3、...
2019-01-30 15:44:35 359
原创 nio(2)-缓冲区buffer
Buffer 就像一个数组,可以保存多个相同类型的数据。根据数据类型不同(boolean 除外) ,有以下 Buffer 常用子类: ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer上述 Buffer 类 他们都采用相似的方法进行管理数据,只是各自管理的数据类...
2019-01-30 14:23:53 217
原创 nio(1)-nio简介
Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。IO NIO 面向流(Stream Oriented) 面向缓冲区(Buffer Oriented) ...
2019-01-30 13:57:24 132
原创 springboot-外部Servlet容器启动原理
一、jar包和war包启动区别jar包:执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的Servlet容器;war包:启动服务器,服务器启动SpringBoot应用【SpringBootServletInitializer】,启动ioc容器;二、servlet3.0扫盲servlet3.0(Spring注解版):规则:1)、服务器启动(web应用启动)会创...
2019-01-04 09:22:34 216
原创 springboot-嵌入式Servlet容器启动原理
一、SpringBoot应用启动运行run方法二、run方法调用了refreshContext(context);SpringBoot刷新IOC容器【创建IOC容器对象,并初始化容器,创建容器中的每一个组件】;如果是web应用创建AnnotationConfigEmbeddedWebApplicationContext,否则:AnnotationConfigApplicationContext...
2019-01-03 19:14:06 206
原创 springboot-嵌入式Servlet容器自动配置原理
一、在springboot-autoconfigure的jar包下查找嵌入式的Servlet容器自动配置类org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration.class @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)@C...
2019-01-03 18:18:38 930
转载 springboot-自动配置原理
1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration2)、@EnableAutoConfiguration 作用:利用EnableAutoConfigurationImportSelector给容器中导入一些组件? 可以查看selectImports()方法的内容; List configurations = getCan...
2018-12-25 18:02:49 252
pd4ml将HTML文件转换成PDF文件
2020-08-06
JavaScript视频教程资料
2018-10-17
从Paxos到Zookeeper分布式一致性原理与实践
2018-09-29
Redis开发与运维
2018-09-29
Java数据结构和算法
2018-09-29
Java程序性能优化
2018-09-29
elasticsearch技术解析与实战PDF
2018-09-29
EffectiveJava中文版(第2版)PDF
2018-09-28
深入理解Java虚拟机第二版
2018-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人