自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (4)
  • 收藏
  • 关注

原创 剑指 Offer 20. 表示数值的字符串——有限状态自动机

剑指 Offer 20. 表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。有限状态自动机:确定有限状态自动机(以下简称「自动机」)是一类计算模型。它包含一系列状态,这些状态中:有一个特殊的状态,被称作「初始状态」。还有一系列状态被称为「接受状态」,它们组成了一个特殊的集合。其中

2021-01-31 21:39:10 135

原创 剑指 Offer 16. 数值的整数次方

剑指 Offer 16. 数值的整数次方实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25思路:如果n为负数,那么x取倒数,保

2021-01-31 21:18:11 53

原创 剑指 Offer 18. 删除链表的节点——双指针

剑指 Offer 18. 删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的

2021-01-31 20:24:16 143

转载 为什么Java中“1000==1000”为false,而”100==100“为true?

Integer a = 1000, b = 1000; System.out.println(a == b);//1Integer c = 100, d = 100; System.out.println(c == d);//2得到:falsetrue基本知识:如果两个引用指向同一个对象,用 == 表示它们是相等的。如果两个引用指向不同的对象,用 == 表示它们是不相等的,即使它们的内容相同。那为什么后面一条语句也应该是true?如果你看去看 Integer.java 类,你会发

2021-01-31 18:05:29 107

原创 剑指 Offer 17. 打印从1到最大的n位数——大数打印法、大数相加

剑指 Offer 17. 打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数public int[] printNumbers

2021-01-31 17:48:54 175

原创 剑指 Offer 15. 二进制中1的个数——位运算

剑指 Offer 15. 二进制中1的个数题目:请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:000000000000000000000000100

2021-01-30 22:43:59 67

原创 剑指 Offer 12. 矩阵中的路径——DFS + 剪枝(回溯法)

剑指 Offer 12. 矩阵中的路径请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的

2021-01-30 21:39:54 123

原创 剑指 Offer 11. 旋转数组的最小数字——二分查找

回溯法:二维数组上搜索路径,如棋盘或迷宫——适合用递归的代码实现,当限定不能用递归时,考虑用栈模拟递归过程动态规划:求某个问题的最优解,并且该问题可以分为多个子问题——自上而下的递归思想去分析,避免不必要的重复计算,考虑自上而下的循环代码实现(即,把子问题的最优解先算出来并用数组保存下来,再基于子问题的解计算大问题的解)贪婪算法:当分解子问题时,如果存在某个特殊的选择,采用这个特殊的选择将一定能得到最优解位运算:把数字表达成二进制之后对0 和 1 的操作剑指 Offer 11. 旋转数组的最小数.

2021-01-30 21:30:14 109

原创 剑指 Offer 09. 用两个栈实现队列、两个队列实现栈——栈、队列

剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“delete

2021-01-26 21:21:21 83 1

原创 剑指 Offer 08. 二叉树的下一个节点

题目:给定一颗二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左、右节点的指针,还有一个指向父节点的指针。如果一个节点有右子树,那么它的下一个节点就是它的右子树中最左子节点。则,从右子节点出发一直沿着指向左子节点的指针,我们就可以找到它的下一个节点。/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/1/19 20:22 * version 1.0 * Description:

2021-01-26 21:09:52 78

原创 剑指 Offer 07. 重建二叉树——树、递归

剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \9 20 / \ 15 7方法:递归二叉树的前序遍历顺序是:根节点、左子树、右子树,每个子树的遍历顺序同样满足前序遍历顺序。二叉树的中序遍历顺序是:左子树、根节点、右子树,

2021-01-26 20:49:13 78

原创 剑指 Offer 06. 从尾到头打印链表

剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]class Solution_06 { public int[] reversePrint(ListNode head) { Stack<ListNode> stack = new Stack<ListNode>(); ListNode temp = head;

2021-01-24 22:22:36 60

原创 剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”方法一:遍历添加由于每次替换从 1 个字符变成 3 个字符,使用字符数组可方便地进行替换。建立字符数组地长度为 s 的长度的 3 倍,这样可保证字符数组可以容纳所有替换后的字符。class Solution { public String replaceSpace(String s) {

2021-01-24 22:19:09 58

原创 剑指 Offer 04. 二维数组中的查找——数组、双指针

剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 tar

2021-01-24 22:13:15 122

原创 LeetCode - 297. 二叉树的序列化与反序列化

二叉树的序列化与反序列化序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: 1 / \2 3 / \ 4 5序列化为 “[1,2,3,null.

2021-01-24 22:07:40 90

原创 【JAVA设计模式总结】——从面向对象到函数式编程和UML

从面向对象到函数式编程编程范式命令式编程范式命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。举例说明:List results = new List();foreach(var num in collection){if (num > 5)results.Add(num);}1)在中央火车站乘坐1号电车;2)在第三站下车;3)向右走,朝第六大道行进,直到第三个路口C, C++ 还是 C#, Java, Javascript,

2021-01-23 22:11:04 173

原创 【JAVA设计模式总结】之创建型模式——单例模式

单例模式定义:用来保证一个对象只能创建一个实例,并且提供了对实例的全局访问方法。为了确保唯一性,所有的单例构造器都要被声明为私有的(private),再通过声明静态(static)方法实现全局访问获得该单例实例public class Singleton{ private static Singleton instance; private Singleton(){ System.out.println("Singleton is Instantiated.");

2021-01-23 21:58:42 106 1

原创 Spring相关的一些问题

面试题总结第1章 Spring相关1.1 什么是控制反转(IOC)?什么是依赖注入?​ 控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的。在传统的编程方式中,业务逻辑的流程是由应用程序中的早已被设定好关联关系的对象来决定的。在使用控制反转的情况下,业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配器负责实例化,这种实现方式还可以将对象之间的关联关系的定义抽象化。而绑定的过程是通过“依赖注入”实现的。​   控制反

2021-01-19 15:08:15 74

原创 【牛客网-名企高频面试题】NC97 出现次数的TopK问题

NC97 出现次数的TopK问题题目描述给定String类型的数组strArr,再给定整数k,请严格按照排名顺序打印 出次数前k名的字符串。[要求]如果strArr长度为N,时间复杂度请达到O(N \log K)O(NlogK)输出K行,每行有一个字符串和一个整数(字符串表示)。你需要按照出现出现次数由大到小输出,若出现次数相同时字符串字典序较小的优先输出示例1输入[“1”,“2”,“3”,“4”],2返回值[[“1”,“1”],[“2”,“1”]]示例2输入[“1”,“1”,“

2021-01-15 22:35:07 221

原创 LeetCode -103 二叉树的锯齿形层序遍历

LeetCode -103 二叉树的锯齿形层序遍历给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层序遍历如下:[[3],[20,9],[15,7]]二叉树的层序遍历:public class 二叉树的层序遍历 { public static void levelOrder(TreeNo

2021-01-15 22:29:37 117

原创 【牛客网-名企高频面试题】 NC73 数组中出现次数超过一半的数字

NC73 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路1:最直白的解法是使用一个 map 来记录各个数字出现的次数,最后取出现次数最多的作为解。但这个方法需要消耗额外的空间,不是最优。思路2(推荐):用一般的排序也可以完成这道题目,但是如果那样完成的话就可能太简单了。用preValue记录上一次访问的值,

2021-01-15 22:26:16 103

原创 分布式文件服务器——FastDFS

什么是FastDFSFastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文

2021-01-14 15:22:27 926

原创 【牛客网-名企高频面试题】 NC66 两个链表的第一个公共结点

【牛客网-名企高频面试题】 NC66 两个链表的第一个公共结点题目描述:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)方法:双指针法如何让本来长度不相等的变为相等的?可以让a+b作为链表A的新长度,b+a作为链表B的新长度。/*public class ListNode { int val; ListNode next = null; ListNode(int val) {

2021-01-12 22:13:49 163 3

原创 【牛客网-名企高频面试题】 NC72 二叉树的镜像

【牛客网-名企高频面试题】 NC72 二叉树的镜像题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。递归版本:public void Mirror_1(TreeNode root) { if(root == null){ return; } TreeNode temp = root.left; root.left = root.right; root.right = temp;

2021-01-12 22:10:20 129

原创 【牛客网-名企高频面试题】 NC102 最近公共祖先——DFS

【牛客网-名企高频面试题】 NC102 最近公共祖先——DFS题目描述给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。示例1输入[3,5,1,6,2,0,8,#,#,7,4],5,1返回值3public class 最近公共祖先 { /** * * @param root TreeNode类 * @param o1 int整型 * @param o2 int整型 * @return i

2021-01-11 22:11:34 126

原创 面试题 04.03. 特定深度节点链表——DFS

面试题 04.03. 特定深度节点链表——DFS给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。示例:输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7 / 8输出:[[1],[2,3],[4,5,7],[8]]class Solution_04_03 { publ

2021-01-11 22:09:04 133

原创 LeetCode - 110 平衡二叉树 --DFS(自顶向下,自底向上)

110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true自底向上 height函数只会被调用1次//自底向上 height函数只

2021-01-11 22:06:04 308

原创 剑指 Offer 03. 数组中重复的数字——set、排序、临时数组、原地置换

剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3四种思路:使用集合set最简单的方式就是把数组中的元素一个个加入到集合set中,加入的时候如果有重复的,则直接返回先排序在查找第二种方式是先排序在查找,排序之

2021-01-11 22:01:39 101 1

原创 MyBatis分页插件pagehelper和PageInterceptor版本问题——源码分析

MyBatis分页插件版本问题Cause: java.lang.ClassCastException: com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor问题背景:在某商城的学习过程中用到的分页插件的版本是4.0以下的版本,基本不支持多边查询的分页,学习资料中是经过高手重新编写的,后来查资料发现最新的5.0及以上的版本已经有了解决方案,便直接用了5.0的版本,除了引用这个page

2021-01-09 22:53:25 3071

原创 【牛客网算法课】—— 将单向链表按某值划分成左边小、 中间相等、 右边大的形式

将单向链表按某值划分成左边小、 中间相等、 右边大的形式【 题目】 给定一个单向链表的头节点head, 节点的值类型是整型, 再给定一个整 数pivot。 实现一个调整链表的函数, 将链表调整为左部分都是值小于 pivot的节点, 中间部分都是值等于pivot的节点, 右部分都是值大于 pivot的节点。除这个要求外, 对调整后的节点顺序没有更多的要求。例如: 链表9->0->4->5->1, pivot=3。 调整后链表可以是1->0->4->9->5,

2021-01-07 22:14:59 158

原创 LeetCode - 234. 回文链表

234. 回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true采用栈的数据结构,遍历链表,把链表压入栈,然后从头开始对比出栈元素是否相等,相等则返回true// need n extra space public static boolean isPalindrome1(Node head) { Stack<Node> stack = new Stack<

2021-01-07 21:49:12 101

原创 【IDEA技巧】——Maven配置以及在pom文件中快速添加依赖

Maven配置搜索maven 配置选择 maven选择 maven 文件夹可以设置自定义的 maven 配置文件Maven项目在pom.xml中快速添加依赖在pom.xml中需要添加依赖的位置,使用快捷键alt+insert插入内容选择Dependency根据artifact名查找输入查找的关键词选择依赖版本也可以根据类名来查找包含这个类的依赖选择根据类名查找输入类名,可以看到,包名类名可以支持模糊查询选择依赖...

2021-01-06 21:00:22 4991

原创 【牛客网算法课】——“之”字形打印矩阵

【题目】给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,例如:1,8,6,72,6,4,113,5,9,10打印结果是1,8,2,3,6,6,7,4,5,9,11,10。要求额外空间复杂度是O(1)。思路:A逐个向右移动,B逐个向下移动,如果当两个标记有一个超过了界限,B则向右移动,A向下移动,两个坐标始终处于一条斜线,然后打印斜线上的元素就行。/**“之字形打印矩阵”*/public class Code_08_ZigZagPrintMatrix { pu

2021-01-05 20:47:02 170

原创 【牛客网算法课】——反转单向和双向链表

【题目】:分别实现反转单向链表和反转双向链表的函数【要求】:如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)

2021-01-05 20:03:04 170

原创 Linux安装Redis的详细教程步骤

我这里就不一一复制粘贴了,Linux安装Redis的详细教程步骤可以点击下面链接进行查看文档:Linux安装Redis的详细教程步骤.note链接:http://note.youdao.com/noteshare?id=7aff23341e6a370df6172218afe43d6f&sub=84362134CAB74261851016F97F6B0C79...

2021-01-04 21:52:12 194

原创 Linux安装MySQL的详细教程步骤

我这里就不一一复制粘贴了,Linux安装MySQL的详细教程步骤可以点击下面链接进行查看文档:Linux安装MySQL的详细教程步骤.note链接:http://note.youdao.com/noteshare?id=bac5601588873e4b9551754f6a3efd4d&sub=58F106664828499786F54B6A12E2CDD0...

2021-01-04 21:51:19 195

原创 Linux系统下安装JAVA jdk的详细教程步骤

Linux安装JAVA jdk的详细教程步骤软件安装包:jdk-7u71-linux-i586.tar.gz工具:FileZilla,SecureCRT(1)首先需要连接上Linux服务器,查看Linux系统的版本信息,主要是来判断是32位还是64位的,以便去下载对应的jdk版本。使用如下命令 uname –a。如果输出结果中含有X86_64,表明系统是64位的,如果出现i686,证明系统是32位的。我这是32位的,选择tar.gz结尾的去JDk官网下载32位的jdk。访问链接:http://

2021-01-04 21:45:09 504

原创 Zookeeper 在Linux系统上的安装,并且启动zookeeper服务

Zookeeper 在Linux系统上的安装安装步骤:第一步:安装 jdk(此步省略,我给大家提供的镜像已经安装好JDK)第二步:把 zookeeper 的压缩包(资源\配套软件\dubbox\zookeeper-3.4.6.tar.gz)上传到 linux 系统。Alt+P 进入SFTP ,输入put d:\zookeeper-3.4.6.tar.gz 上传第三步:解压缩压缩包tar -zxvf zookeeper-3.4.6.tar.gz第四步:进入 zookeeper-3

2021-01-04 21:26:08 279

原创 springSecurity源码分析-springSecurityFilterChain

为什么在使用SpringSecurity时,web.xml文件里面的springSecurityFilterChain定义的过滤器的名字不可以改变?

2021-01-03 22:29:26 212

原创 剑指 Offer 35. 复杂链表的复制

剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]方法一:栈栈的特点是后进先出,即最后压入栈的元素最先弹出。考虑到栈的这一特点,使用栈将链表元素顺序倒置。从链表的头节点开始,依次将每个节点压入栈内,然后依次弹出栈内的元素并存储到数组中。创建一个栈,用于存储链表的节点创建一个指针,初始时指向链表的头节点当指针指向的元素非空时,重复下列操作:将指针指向的

2021-01-03 22:14:49 70

Java源码分析:集合-容器.pdf

Java源码分析:集合-容器.pdf

2021-04-02

maven_02_parent.zip

maven工程拆分与聚合的思想 ,把web工程修改成maven拆分与聚合的形式的具体步骤 1. maven工程拆分与聚合的思想 2. 把第二阶段做好的web工程修改成maven拆分与聚合的形式

2020-12-16

ssm_test.zip

SSM框架——详细搭建整合环境SSM框架(Spring+SpringMVC+MyBatis) 服务器开发,分三层 Spring去整合另外两个框架 spring ——> mybatis spring ——> spring mvc 表现层:Spring MVC框架 业务层:Spring框架 持久层:MyBatis框架 选择:配置文件 + 注解的方式

2020-12-16

Linux&Nginx

Linux的安装步骤和资源安装包,linux目录结构介绍,linux常用命令,linux权限命令讲解,vi&vim编辑器,linux常用的网络操作;Nginx的安装和启动,nignx静态网站部署步骤手册,Nginx反向代理与负载均衡

2020-10-23

空空如也

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

TA关注的人

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