自定义博客皮肤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

没有最强,只有更强。分享技术,改变世界。

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

原创 【经典】Java工程师必读书籍,计算机基础资料推荐

对与做技术的人,总是感觉时间不够用。1. 为什么学Java呢? 大概问一下,我们为什么学习Java呢?我思考了下,大概有以下几个原因:热爱技术,对计算机编程非常感兴趣 因为Java的优势:Java语言摆脱了硬件平台的束缚,实现了一次编程,到处运行的效果,,也就是Java是跨平台的优势;提供了一种相对安全内存管理和访问机制,吸收了C++的优点,避免了绝大部份的内存泄漏和和指针越界的问题;实现了热点代码检测和运行时编译及优化,使得Java随着运行时间的增长而获得更高的性能;Java有一套完整..

2020-10-13 11:42:10 314 2

原创 【链表】【打卡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 4

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

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

2021-10-16 18:57:56 14

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

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

2021-10-10 20:01:42 12

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

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

2021-10-10 16:33:00 24

原创 【链表】【打卡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 8

原创 【链表】【打卡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 11

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

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

2021-10-07 17:29:27 4

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

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

2021-10-06 16:30:54 22

原创 【链表】【打卡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 14

原创 【链表】【打卡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 17

原创 【链表】【打卡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 12

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

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

2021-10-04 23:10:09 15

原创 【链表】【打卡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 13

原创 【数据结构——链表】链表的基本操作,链表指针指向方向,链表指向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 14

原创 【详解】【打卡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 6

原创 【链表】【打卡41天】反转链表 leetCode:206. 反转链表

解析:记住以下几点:① head是当前结点,p是当前结点的下一个结点,pre是当前结点的②只要当前结点不为空,就往下走得嘞,直接看代码!/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; }..

2021-10-01 23:54:44 8

原创 【详解】Dockerfile原理、镜像容器、命令总结

重要事情说三遍:创建Dockerfile文件的时候,文件名必须是Dockerfile创建Dockerfile文件的时候,文件名必须是Dockerfile创建Dockerfile文件的时候,文件名必须是Dockerfile1、Docker 中镜像和容器概念①Docker镜像Docker 镜像是一个特殊的文件系统,除了提供容器所需的程序、库、资源、配置等文件外,还包含了一些能为运行时准备的一些配置参数(匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后不会

2021-10-01 20:57:33 201

原创 【链表】【打卡第40天】leetCode160. 相交链表:相交链表,求两个链表相交的第一个公共结点

思想:定义Set集合,存储A链表的结点。接着遍历B链表,并判断set集合中是否包含B链表的结点,包含的话,就返回该结点。public class Solution{ public ListNode getInterSectionNode(ListNode headA,ListNode headB){ ListNode nodeA = headA; ListNode nodeB = headB; Set<ListNode&gt.

2021-09-29 23:08:32 9

原创 【已解决】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon

连接Docker 失败。解决步骤如下:①先看下docker的状态,可能是没加载好镜像,强制停止了 systemctl status docker② 去这个目录,并查看有什么文件cd /etc/dockerls ③直接输入vim daemon.json,添加以下链接{ "registry-mirrors": ["https://registry.docker-cn.com"]}④重启docker服务systemctl restart dock...

2021-09-27 22:32:31 45

原创 【详解图解清晰】golang工程部署到docker容器

1、基础概念①Docker镜像Docker 镜像是一个特殊的文件系统,除了提供容器所需的程序、库、资源、配置等文件外,还包含了一些能为运行时准备的一些配置参数(匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后不会被改变。②Docker容器Docker 容器是一个在运行的Docker镜像的实例(instance)。包括服务或应用的状态和其他动态的数据。③镜像和容器小结:可以理解为:镜像是一个类,容器是类的一个实例。容器是一个动态的。④Doc...

2021-09-25 23:46:12 62

原创 【详解】自定义镜像:invalid reference format: repository name must be lowercaseSee ‘docker build --help‘.

翻译:自定义镜像错误,命名必须是小写// 后面的 centos:1.0 不能写成 CENTOS:1.0docker build -f /home/docker-test-volumn/dockerfile1 -t vm-4-15-centos/centos:1.0 .

2021-09-25 14:32:30 24

原创 【详解】Docker Build 出错:dockerfile parse error line 2: unknown instruction: VOLUME[“volume01“]

在写好Dockerfile,使用docker build的时候往往参数会出错。估计这个坑大家都会踩。那就是没加空格:VOLUME ["VOLUME01"]:之间是有空格的CMD []:CMD之间也是有空格的完整的构建Dockerfile命令如下:// -f是表示一个dockerfile文件// -t target代表的是一个目标路径// 最后的 . 代表的是当前对象路径下docker build -f dockerfile全路径 -t 宿主机下的/镜像名:版本 ....

2021-09-25 14:29:07 65

原创 【亲测已解决】CentOS7 ifconfig commend not fount(命令找不到)

1、输入命令dhclient,可以自动获取一个IP地址,再用命令ip -a addr查看IP2、然后输入 yum search ifconfig查找符合这个命令的组件,查找到net-tools.x86_64,安装这个组件3、4、接下来安装组件yum installnet-tools.x86_645、安装成功后ifconfig,查看ip地址相关信息...

2021-09-23 16:57:38 5

原创 【详解】go语言中Printf()、Sprintf()、Fprintf() 区别

Printf()、Sprintf()、Fprintf() 函数都是输出格式化字符串,只是输出到的目标不一样:① Printf() 是把格式化字符串输出到标准到标准输出(一般是屏幕,可以重定向)②Sprintf() 是把格式化字符串输出到指定的字符串中,可以用一个变量来接受,然后在打印var str stringstr = Sprintf("%s",s)③Fprintf() 是把格式字符串输出到指定的文件设备中,所以参数比Printf 多一个文件指针*File主要用于文件操作,Fpr.

2021-09-21 14:06:57 28

原创 【已解决】安装Gin出现:go get: module github.com/gin-gonic/gin: Get “https://proxy.golang.org/github.com/

# 设置goproxy.io代理go env -w GOPROXY="https://goproxy.io"# 设置GO111MOUDLEgo env -w GO111MODULE="on"以上是Window的设置。接下来就下载就可以了。go get -u github.com//gin-gonic/gin

2021-09-19 22:46:23 28

原创 Go运行Gin框架,已安装Unresolved dependency

在安装gin框架的时候,明明已经安装好了。但是gin的包就是引入失败,出现Unresolved dependency。下面给予解决办法:go get -u github.com//gin-gonic/gin在File-->Setting-->Go Modules --> Enable Go modules integration发现导包成功!...

2021-09-19 14:52:59 16

原创 【贪心思想】【打卡第39天】leetCode之Java实现:435. 无重叠区间

1、题目描述给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。2、题目分析思路:1.计算最多能组成的不重叠区间个数,然后用区间总个数减去不重叠区间的个数。2.在每次选择中,区间的结尾最为重要,选择的区间结尾越小,留给后面的区间的空间越大,那么后面能够选择的区间个数也就越大。3.按区间的结尾进行排序,每次选择结尾最小,...

2021-09-16 09:54:24 10

原创 【详解】go语言中的new关键字

new关键字是用来分配内存的函数,new(Type)作用是为T类型分配并清零一块内存,并将这块内存地址作为结果返回。也就是说new(T)会为类型为T的新项分配已置零的内存空间,并返回它的地址。在go中,返回一个指针,指针指向新分配的内存,类型为T类型的零值。type Buf struct{ a int b string}// 为Buf分配内存空间,返回是指针类型 type *pp := new(Buf)// q的类型是Buf类型var q Buf...

2021-09-15 22:38:09 21

原创 【贪心思想】【打卡第38天】leetCode之Java实现:455. 分发饼干

1、题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。2、题目分析题目描述:每个孩子都有一个满足度 grid,每个饼干都有一个大小 size,只有饼干的大小大于等于一...

2021-09-14 19:14:58 12

原创 【详解】Go语言中的下划线的使用

1、import中的下滑线import( _ "net")此时“_”的作用是:当导入一个包的时候,不需要把所有的包都导进来,只需要导入使用该包下的文件里所有的init()的函数。package mainimport _ "hello/imp"func main() { //imp.Print() //编译报错,说:undefined: imp}2、下划线在代码中作用是:下划线在代码中是忽略这个变量也可以理解为占位符,那个位置上本应该赋某个值,但是我们不

2021-09-10 16:42:56 24

原创 【详细】GoLand配置git

官网下载git:https://gitforwindows.org/下载安装后,记住自己的安装路径然后配置GoLand:Setting-->Version Control-->Git-->Path to Git executable ,安装路径下的Git->cmd->git.exe,出现版本信息说明配置成功。...

2021-09-09 16:16:52 194

原创 【简洁】Xmind中如何换行

Shift + Enter

2021-09-08 11:01:32 23

原创 【双指针法】【打卡第37天】leetCode之Java实现:680. 验证回文字符串 Ⅱ

1、题目描述给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。2、算法分析之前做的是判断一个链表是否是回文链表,比较简单。本题题意:最多删除其中的一个字符,判断是否是回文链表。所谓的回文字符串,是指具有左右对称特点的字符串,例如 "abcba" 就是一个回文字符串。 使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,每次都判断两个指针指向的字符是否相同,如果都相同,字符串才是具有左...

2021-09-05 07:53:20 25

原创 【双指针法】【打卡第36天】leetCode之Java实现:345. 反转字符串中的元音字母

1、题目描述给你一个字符串s,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现。2、算法分析使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。为了快速判断一个字符是不是元音字符,我们将全部元音字符添加到集合 HashSet 中,从而以 O(1) 的时间复杂度进行该操作。知识补充:①获取字符串中的其中的某个字符:string....

2021-09-04 23:44:55 27

原创 【双指针法】【打卡第35天】leetCode之Java实现:633. 平方数之和

1、题目描述给定一个非负整数c,你要判断是否存在两个整数a和b,使得a2+ b2= c。2、题目分析本题使用的是双指针解法。可以看成是在元素为 0~target 的有序数组中查找两个数,使得这两个数的平方和为 target,如果能找到,则返回 true,表示 target 是两个整数的平方和。本题和 167. 两数之和 类似,只有一个明显区别:一个是和为 target,一个是平方和为 target。本题同样可以使用双指针得到两个数,使其平方和为 target。...

2021-09-04 17:15:39 9

原创 【双指针法】【打卡第34天】leetCode之Java实现:167. 两数之和 II - 输入有序数组

1、题目描述给定一个已按照 非递减顺序排列的整数数组numbers ,请你从数组中找出两个数满足相加之和等于目标数target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。2、算法分析题目描述:在有序数组...

2021-09-03 23:26:58 59 2

原创 【详解】快速输入输出函数:BufferedReader、BufferedWriter

在笔试的时候,一般使用的平台有:牛客,AcmCode,OJ系统一定注意:类名一定要使用Main,这几天有笔试就是因为编译器不会用,还有输入函数要直接使用Scanner,所以,很遗憾。public class Main{}BufferedReader 和 BufferedWriter 都在 java.io.*包内。(1)BufferedWriter①创建输入函数BufferedReader对象:BufferedReader in = new BufferedReader(new

2021-09-02 19:05:55 18

原创 Integer类型和String类型相互转化

1、Integer转StringString s = String.valueOf(i);String s = Integer.toString(i);2、String 转Integerint i = Integer.parseInt(s);int i = Integer.valueOf(s).intValue();

2021-09-02 18:35:07 32

原创 【详解】Scanner输入函数

笔试的时候,往往会有输入内容,输出内容,基本上借助Scanner输入函数来操作。一、Scanner简介 Java5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。小结: Scanner是控制台输入函数,键盘输入内容通过Scanner类的相管方法接受,然后赋值给变量。二、Scanner用法(1)接收控制台单个元素的输入 ① Scann...

2021-09-02 17:44:22 29

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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