自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CodingLJ

种树最好的时机是十年前,其次是现在。

  • 博客(42)
  • 收藏
  • 关注

原创 【数组】【打卡63天】《剑指Offer》2刷:JZ29 顺时针打印矩阵

代码注释详细!1.题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵,以及输出的顺序:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]][1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]2.算法分析①一层一层的从外向里打印,每一层都有相同的步骤,唯一不同的是上下左右的边界不同。②因此使用四个变量top,right,down,left作为.

2021-10-31 16:38:11 104

原创 【二叉树】【打卡62天】《剑指Offer》2刷:JZ32 从上往下打印二叉树

1.题目描述不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。2.算法分析题目要求从上到下打印二叉树。也就是数据结构中的二叉树的层次遍历。很容易想到的是队列,这里使用两个ArrayList容器,一个是作为结果集,一个是作为模拟队列。知识补充:ArrayList.remove(int index):删除这个in..

2021-10-31 14:59:44 123

原创 【总结】字符串的遍历,replace(),replaceAll()方法的使用

①字符串的遍历:// 方法一:使用charAt(i):遍历字符串的每个元素,每个元素是字符的形式for(int i=0;i < str.length();i++) { System.out.println(str.charAt(i)); }//方法二:截取字符串种的每个字符for(int i=0;i < str.length();i++) { System.out.println(str.substring(i,i+1)); }//方法三.

2021-10-30 21:52:47 2841 2

原创 【字符串数组】【打卡61天】《剑指Offer》2刷:JZ5 替换空格

1.题目描述请实现一个函数,将一个字符串s中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。2.算法分析关于字符串的知识补充:①字符串的遍历:// 方法一:使用charAt(i):遍历字符串的每个元素,每个元素是字符的形式for(int i=0;i < str.length();i++) { System.out.println(str.charAt(i));}...

2021-10-30 21:40:20 92

原创 【详解】docker容器间的通信互联、以及相关命令

1.docker中容器间的高级网络配置 为什么提供网络功能? docker允许通过外部访问容器或者容器互联的方式来提供网络服务。 本文主要讲的是docker中容器间的网络网桥bridge的双向通信。单向通信 --link的使用的很少了。如下图: 过程原理: 当docker启动的时,会自动在主机上创建一个docker0的虚拟网桥,实际上是Linux的虚拟网桥bridge,可以理解为一个软件的交换机...

2021-10-30 14:58:14 1378 1

原创 【链表】【打卡60天】:647. 回文子串

1、题目描述给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。2、算法分析比如对一个字符串 ababa,选择最中间的 a 作为中心点,往两边扩散,第一次扩散发现 left 指向的是 b,right 指向的也是 b,所以是回文串,继续扩散,同理 ababa 也是回文串。这个是确定了一个中心.

2021-10-29 19:48:53 154

原创 【详解】偏底层:一条SQL查询语句是如何执行的?

作为一名即将步入IT行业的后端开发人员,实习过,写过很多SQL语句。一条sql语句是如何执行的呢?今天就好好研究研究这个问题。比较有意思,而且更加了解数据库server的分工等。 比如最简单的一条sql语句:select * from T where ID = 10; 当我们输入一条SQL语句,返回一个结果。下面对这条语句,数据库server,以及数据存储引擎进行拆解。下面是基本的MySQL架构示意图,从中可以清楚的看到SQL语句在MySQL的各个功能模块中的...

2021-10-29 18:17:49 172

原创 【详解】docker容器常用命令操作

上一讲说的是镜像的相关命令:【详解】docker镜像、容器、仓库以及docker镜像命令_CodingLJ-CSDN博客现在通过镜像运行一个容器,

2021-10-29 12:51:32 1511

原创 【详解】docker镜像、容器、仓库以及docker镜像命令

1.什么是Docker?Docker的作用? 帮助开发人员以及团队构建和发布应用(application),将应用和应用环境全部部署再Docker容器里。 研发人员开发的应用,本机测试环境可以跑,但是生产环境跑不起来。比如:在一个java web 应用中涉及很多东西,比如jdk,tomcat,mysql等软件环境,其中的一项版本不一致的时候,可能会造成应用程序跑不起来的情况。这个时候Docker容器化技术就出现了。Docker容器将程序以及软件应用环境打包在一起,无论在哪个机...

2021-10-28 17:48:27 1107 2

原创 【数组】【打卡59天】《剑指Offer》2刷:JZ4 二维数组中的查找

1、题目描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target= 7,返回true。给定target=3,返回false。数据范围:矩阵的长宽满足0 \le n,m \le 5000≤n,m≤50...

2021-10-27 22:59:46 72

原创 【详解】二维数组的长度问题。int[][] arr = new arr[3][4];arr.length;arr[0].length;

二维数组可以看成一个一维数组。二维数组的行可以看成一维数组的元素,列可以看成具体其中的元素。1、arr.length代表的是二维数组的行2、arr[0].length是二维数组的列。具体看下面测试代码:...

2021-10-27 21:05:56 4501

原创 【最终解决】docker或者docker compose部署mysql服务启动404

当tomcat进行启动的时候,会报错404。之前讲的2种解决方法都是把tomcat目录下的/usr/local/tomcat/下的webapps删除,将webapps.dist 修改为webapps既然构建tomcat镜像,不如我们自己构建,以官方tomcat为基础镜像。操作如下:使用RUN命令运行shell脚本。将操作如下即可。构建的tomcat镜像运行的话:运行http://ip:(映射的宿主机端口)...

2021-10-26 17:41:31 520

原创 【已解决】docker compose部署tomcat服务404,tomcat已经启动,但是访问出现404

访问http://ip/8098的时候出现:解决:进入容器:docker exec -it container_id bash将webapps.dist/ 文件名修改为webapps.访问成功!

2021-10-26 15:45:23 11668 1

原创 【亲测已解决】docker中部署tomcat服务,启动404:The origin server did not find a current representation for the targe

访问提示404:访问提示404说名已经访问到了,但是路径不对或者其他原因。OK,直接说解决办法:①启动容器②进入容器,展示容器信息。删除webapps,将webapps.dist修改为webapps。③访问成功...

2021-10-26 15:04:19 267

原创 【10分钟学会】yaml 简易教程

之前学SpringBoot框架中配置文件有。.propertes结尾的,.yml结尾的。现在熟悉下docker-compose的基本知识又遇到了yaml配置文件。趁着这个机会熟悉下yaml。 YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。但作为开发语言的时候,仍然是一种标记语言。YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用...

2021-10-26 13:29:08 480

原创 【数组】【打卡58天】《剑指Offer》2刷:JZ3 数组中重复的数字

1、题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1。2、算法分析最近发现,算法最最重要的是解题的思路,这个非常关键。当然,细节问题也很重要。题目中:找出数组中任一一个重复的数字。如果输入长度为7的数组[2,3,1,0,2,5,3],那么对.

2021-10-25 22:38:57 85

原创 解决maven打包异常:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2

项目在引入org.junit.Test 做单测时,maven不管是操作package还是install一直报错,提示:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project gulimall-coupon: There are test failures.Please refer to D:\m1\0613\mall-coupon\targ

2021-10-25 11:20:42 576

原创 【二叉树】【打卡57天】《剑指Offer》2刷:JZ28 对称的二叉树

1、题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2、题目分析判断所给树是否为对称二叉树。有以下几种情况:① 该二叉树是空树。②该二叉树只存在根结点③该二叉树只存在左子树或者右子树④通过递归遍历,找出对称点。具体看代码分析:3、代码实现/*public class TreeNode { int val = 0; TreeNode left = null; Tr.

2021-10-25 09:47:31 85

原创 【二叉树】【打卡56天】《剑指Offer》2刷:JZ27 二叉树的镜像

1、题目描述操作给定的二叉树,将其变换为源二叉树的镜像。数据范围:二叉树的节点数0 \le n \le 10000≤n≤1000, 二叉树每个节点的值0\le val \le 10000≤val≤1000要求:空间复杂度O(n)O(n)。本题也有原地操作,即空间复杂度O(1)O(1)的解法,时间复杂度O(n)O(n)2、算法分析二叉树的镜像。就像一面镜子,镜子里的二叉树。左右孩子结点交换位置,当然,左右孩子以下的子树随着子树的交换而转换位置。剩下的就...

2021-10-24 22:41:40 521

原创 【二叉树】【打卡55天】《剑指Offer》2刷:树的子结构

本题稍微有点难度的。自己举个例子最好。1、题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。2、算法分析题目中判断B是否为A的子树。大概有那么几种可能。①B树从A的根结点开始就和B的树结构一样。②B树和A的左孩子的一部分的树结构一样。③B树和A的右孩子的一部分的树结构一样。分为主函数和helper函数。helper是具体判断结点的值相同,当然结构也相同。主函数判断结构是否相同。边界条件:3、代码实现..

2021-10-23 12:11:52 70

原创 【二叉树】【打卡54天】《剑指Offer》2刷:JZ8 二叉树的下一个结点

1、题目描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示2、算法分析题目求得是二叉树中中序遍历当前结点的下一个结点。①当前结点存在右孩子结点,那就看一下右孩子结点是否有左孩子结点,有的话就继续遍历它的左孩子结点。②当前结点不存在右孩子,那么它存在左孩子对它来说并没什么卵用,那就往父..

2021-10-22 22:49:29 102

原创 【数组】【打卡53天】leetCode:66. 加一

1、题目描述给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。2、算法分析如果数组中的数都是9怎么办? 只有末位部分是9怎么办?所以分为2块进行处理:①末位有9的情况,没9的话末位直接加1就行了②都是9的情况。3、代码实现class Solution{ public int[] plusOne(int[] d..

2021-10-21 22:55:21 69

原创 【详解】Linux中 ~ / /home/ /root/之间区别和联系

~:用户的家目录,也就是用户个人的目录,可以存储文件信息等。/ :Linux是一个文件系统,/是文件系统的根目录。/home:是根目录下的一个子目录,主要存储的是普通用户信息。用户的家目录,包含保存的文件、个人设置等,一般为单独的分区/root:是根目录下的超级用户家目录,也就是root超级管理员用户。下面看下演示代码:可以看到 ~ 用户家目录的路径是 /root,因为当前是root用户...

2021-10-21 12:08:59 6791

原创 【详解】绝对路径和相对路径

通俗易懂:①绝对路径:在计算机中找到文件的位置,计算机表示文件位置的方式是路径。描述计算机完整的文件位置的路径称为绝对路径,如C:/website/web/a.html,这样我们通过这个路径找到文件的位置。在网站中,https://www.baidu.com是网站的绝对路径。②相对路径(相对,相对,找统一目录下):相对路径说白了路径不完整的情况下使用../或者是../../找到定位文件的位置。如C:/website/web/a.html,它的相对位置可以为../web/a.html

2021-10-21 10:51:50 4166

原创 【二叉树】【打卡52天】《剑指Offer》2刷:JZ7 重建二叉树

1、题目描述描述给定节点数为 n 二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.vin.length ==pre.length2.pre 和 vin均无重复元素3.vin出现的元素均出现在pre里4.只需要返回根结点,系统会自动输出整颗树做答案对比数据范围:n \le 2000n≤2000,节点的值-10000...

2021-10-21 09:29:46 150

原创 【链表】【打卡51天】:leetCode:203. 移除链表元素

1、算法描述给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。2、算法分析在链表开始定义一个空的结点,数据域可以任意。ListNode dummyHead = new ListNode(-1);dummyHead.next = head;这样就省去了第一个结点等于val的判断。注意:注意链表的数据结构 Definition for singly-linked list. p...

2021-10-19 15:27:57 94

原创 【leetCode周赛】【美团第 262 场周赛】:leetCode:2032. 至少在两个数组中出现的值

1、题目描述给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 不同 数组,且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。2、算法分析3个数组,题目要求求出数组中的数字,这个数字至少是在其中的两个数组中出现过。求出数组中符合条件的数字。暴力暴力!!注意:Set是存储不重复的元素。当重复添加的时候,还是添加一个。public static void main(String[] args) { L

2021-10-16 18:57:56 176

原创 【小结】剑指Offer算法链表总结:方法总结,题解总结。

【链表】:JZ3 从尾到头打印链表【链表】:JZ56 删除链表中重复的结点【链表】:JZ14 链表中倒数最后k个结点【链表】:JZ55 链表中环的入口结点,2种解法【链表】:JZ15 反转链表【链表】:JZ16 合并两个排序的链表 ,2种方法【链表】:JZ36 两个链表的第一个公共结点【链表】:剑指 Offer 35. 复杂链表的复制,2种方法已经是二刷剑指Offer了,总体来说并不难。细节问题稍微多一些。思路总结:①从尾到头:一般看到这种字眼,我一般会想到栈Sta

2021-10-10 20:01:42 81

原创 【链表】【打卡50天】《剑指Offer》2刷:剑指 Offer 35. 复杂链表的复制,2种方法

1、题目描述2、算法分析本题是复杂链表的复制:普通链表都是next指针指向后面的链表,现在的是两个指针next,random指针指向后面结点,random是随机指针方向步骤如下:使用Map集合进行映射,key是当前链表的结点,value是新链表的结点①链表结点的复制,建立“原结点——>新结点”的映射②构建新链表结点的next,random指针方向③返回新链表结点的头结点如图:3、代码...

2021-10-10 16:33:00 124

原创 【链表】【打卡49天】《剑指Offer》2刷:JZ36 两个链表的第一个公共结点

1、题目描述2、算法分析题目要求的是求两个链表中的第一个公共结点,使用Set集合的特性,元素不能重复。将链表1存储Set集合中,然后判断Set中是否包含链表2的结点。包含的话就返回该结点,该结点就是公共的第一个结点。3、代码实现/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*..

2021-10-08 12:47:59 103

原创 【链表】【打卡48天】《剑指Offer》2刷:JZ16 合并两个排序的链表 ,2种方法

1、题目描述2、算法分析将两个链表进行合并,而且是升序的链表。分别比较两个链表结点的值。这里有2种方法:①递归,不创建新的链表,直接A,B合并,不借用其他的空间②创建新的链表,分别将A,B比较的结果进行合并知识补充:ListNode head = new ListNode(0);为0的时候说明创建了一个新的链表ListNode head = new ListNode(3);此时链表中开始结点的值为33、算法实现方法一:创建新的链表存储publ..

2021-10-07 23:11:17 87

原创 【区别】../ ./ / 之间的区别

./是当前目录:../是父级目录:cd ../../bin(cd到父级目录下的bin)/是根目录:cd /

2021-10-07 17:29:27 186

原创 【数据结构——数组你真会了吗?】动态数组的基本操作

建议:把下面数组的代码敲一遍。数组就差不多了。1、数组相关知识 在做算法的过程中,数组也涉及的挺多的,当然这里说的数组当然是动态数组。对数据的操作增删查改需要熟练。Java中使用集合多一些,但是算法中数组题目挺多的。数组是把数据码成一排进行存放。存储相同类型的数据类型。索引从0开始。2、数组代码数组最大的优点就是快速查询,通过索引快速定位。现在制作自己的数组类。这里是泛型类Array<E>。这里面比较重要的是数组的扩容。和删除数组的时候数组的减容量...

2021-10-06 16:30:54 132

原创 【链表】【打卡47天】《剑指Offer》2刷:JZ15 反转链表

1、题目描述2、题目分析先判空,若head为空,则返回null定义两个结点指针,分别指向的是ListNode pre = null,pre指向当前节点的前一个结点。ListNode p = head; p指向当前结点。看图:3、代码实现/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; .

2021-10-06 11:15:17 1110

原创 【链表】【打卡46天】《剑指Offer》2刷:JZ55 链表中环的入口结点,2种解法

1、题目描述2、算法分析首先链表中有环,说明相交的结点在链表中有重复的结点。这个时候会想到Set集合,Set集合中的元素不可重复,但是有一点注意,元素是无序的。直接看代码:3、代码实现/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util....

2021-10-06 09:24:11 96

原创 【链表】【打卡45天】《剑指Offer》2刷:JZ14 链表中倒数最后k个结点

1、题目描述2、题目分析①题目要求是求倒数第k个结点,定义head1,head2结点指针指向pHead结点②从i->k,head1先走k个结点,在走k个结点的时候,如果head1为空了。也就是题目中所说的,链表长度小于K值得情况③当head1到k个位置得时候,此时head1,head2一起往右走,直到head1指向链表得最后一个结点。注意:最后结果返回的是以head2为开始的链表,ListNode list2 为链表3、代码实现import java.util..

2021-10-05 12:00:19 104

原创 【链表】【打卡44天】《剑指Offer》2刷:JZ56 删除链表中重复的结点

1、题目描述2、算法解析①首先判断当前结点和当前结点的下一个结点是否为空,为空的话返回pHead结点②定义一个空的链表存储处理后的结点,定义当前结点的前一个结点指向空链表的头系欸但,定义当前结点指向链表的pHead结点③循环判断,while判断条件为当前结点不为空,判断下一个结点不为空且当前结点值和下一个节点值相等,以及多个结点连续相等的情况用while来判断。删除处理后的结点。最后返回的是新链表的第一个结点。如图所示:3、代码实现/* public clas..

2021-10-04 23:10:09 96

原创 【链表】【打卡43天】《剑指Offer》2刷:JZ3 从尾到头打印链表

分析:这种逆序交换的,首先想到栈的操作。栈存储结点,集合存储结点的值val直接看代码AC:/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.*;public clas...

2021-10-04 15:52:05 95

原创 【数据结构——链表】链表的基本操作,链表指针指向方向,链表指向data域的移动

最近做算法题的时候,链表多一些,凑着这个机会总结下链表的操作。链表的结点中有指针域和data域,指针域负责存储下一个结点的地址,指向下一个结点的方向标。data域存储链表的内容。1、链表的插入解析:p指针指向的结点和p->next指针指向的结点之间插入一个S结点。首先S结点的指针指向p的下一个结点。S->next = p->next,也就是图中的①,接着是②,断开p和p->next结点之间的联系,让p结点指向S的地址,p->...

2021-10-04 15:12:30 3998

原创 【详解】【打卡42天】leetCode:21. 合并两个有序链表

解析:①首先是两个链表都是升序的②比较两个链表的值,然后递归/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) {...

2021-10-02 00:22:35 77

空空如也

空空如也

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

TA关注的人

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