自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 Java日志框架--logback

logback视频笔记

2022-10-07 20:25:37 1773

原创 Java日志门面框架--SLF4J

sl4j日志框架视频学习记录

2022-10-01 19:19:57 1508

原创 Java常用日志框架--log4j

B站log4j视频的笔记

2022-09-22 23:31:31 4578

原创 Java常用日志框架--JUL

JUL日志学习

2022-09-18 16:22:27 425

原创 Java判断字符串、对象、list是否为空总结

java字符串、集合、对象判空

2022-07-30 16:57:34 4937

原创 跳跃游戏(LeetCode55)---贪心(Java)

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一

2022-04-06 20:36:35 148

原创 用最少数量的箭引爆气球(LeetCode452)---排序+贪心(Java)

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆,所需的弓

2022-03-28 20:24:29 179

原创 柠檬水找零 (LeetCode 860)---贪心(Java)

**(作者:carlsun-2):账单是20的情况,为什么要优先消耗一个10和一个5呢?因为美元10只能给账单20找零,而美元5可以给账单10和账单20找零,美元5更万能!所以局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。局部最优可以推出全局最优,并找不出反例,那么就试试贪心算法!**class Solution { public boolean lemonadeChange(int[] bills) { //5块钱的数量 .

2022-03-21 22:35:06 855

原创 分发饼干(LeetCode455)---排序和贪心(Java)

贪心算法:先寻找局部最优解,进而整合起来的结果仍然是整体最优解。将饼干按照从小到大排列,同时也将孩子的胃口从小到大排序,找到满足孩子胃口的最小饼干,满足这个局部最优解。class Solution { public int findContentChildren(int[] g, int[] s) { //将孩子们的胃口进行排序 Arrays.sort(g); //将饼干的大小进行排序 Arrays.so.

2022-03-20 17:11:12 377

原创 两数之和(LeetCode1)--数组和哈希映射(Java)

如图示例,先遍历到了2,然后计算anotherNum = target - nums[i],然后判断map里有没有anotherNum这个key,刚开始的时候map里面是空的,所以执行else语句map.put(nums[i],i),把遍历到的值和它的下标记录到map里。然后遍历到了7,执行anotherNum = target - nums[i]的计算,此时anotherNum = 2,执行map.containsKey(anotherNum)判断map是否有2这个key,如图所示,map是有2这..

2022-03-19 22:23:35 215

原创 盛水最多的容器(LeetCode11)---双指针(Java)

1)刚开始的时候,最左边的柱子和最右的柱子,形成的容器宽度最大。1)如果移动较高的柱子,由于容器的宽度在变小,而容器的高度一定不会增加,所以容器的可以容纳的水的面积在变小。2)所以,只能移动较短的柱子,然后计算此时容器的面积,再与之前记录的面积 res 进行比较,保存那个更大的值。class Solution { public int maxArea(int[] height) { //指向最左边的柱子 int left = 0; //指向...

2022-03-19 21:09:33 813

原创 有序数组的平方(LeetCode977)---数组(Java)

思路:因为原来的数组是有序的,数组平方以后的最大值一定是在原来数组的最左边或者最右边,所以在原数组两端设置两个指针,比较指针所指的数的平方大小,将值较大的放到result数组里,移动指针继续比较直到两个指针相遇。class Solution { public int[] sortedSquares(int[] nums) { //left指针指向最左边的数 int left = 0; //right指针指向最右边的数 .

2022-03-19 11:36:11 603

原创 颜色分类(LeetCode75)--数组(Java)

1.初始状态2.cur = 0,说明应该是放在前面的,而left指的是0应该放置的位置,所以left和index交换位置。交换完以后,cur和left都向后移动。3.cur = 1,1放在了正确的位置,index++,cur指针直接向后移动就行了。4.cur=2,此时进行right和index交换位置,right指针向左移动。此时index不移动,因为还不知道right交换过来的是什么数,0,1,2都有可能,程序会自己再进行下一次循环,再判断,再交换。 public void sor.

2022-03-05 22:55:28 455

原创 合并两个有序数组(LeetCode88)--数组(Java)

class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { //i是m部分的数组下标 int i = m - 1; //i是n部分的数组下标 int j = n - 1; //cur是整个nums1部分的数组 int cur = nums1.length - 1; //保证nums[2]数组下标不越界 while(j &...

2022-03-05 17:47:45 438

原创 合并K个升序链表(LeetCode23) ---链表和递归(Java)

package com.tang.project1.utils;class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; } }public class LeetCode23 {.

2022-03-04 23:35:46 141

原创 奇偶链表(LeetCode328)---链表(Java)

注意题目说的是索引为奇数和偶数的节点,节点里面的值是奇数还是偶数都没有关系。思路:设置一个指针把奇索引节点连接起来,设置一个指针把偶索引节点连接起来,然后把奇索引的尾指针指向偶索引链表。1.开始的时候指针指向: odd奇,even偶,evenHead偶索引的新头节点2.odd.next = even.next; odd = odd.next; odd的下一个在even的后面,并移动odd指针。3.even.next = odd.next;even = even.next; even的下一个在o..

2022-02-28 11:52:11 403

原创 回文数字(LeetCode234)---链表(Java)

思路:先用快慢指针找到中间点,然后把后半部分翻转,然后同时遍历前半部分和后半部分,都一样就是回文链表。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, List..

2022-02-27 17:17:03 387

原创 K个一组翻转链表 (LeetCode25)---链表(Java)

思路:先遍历k个需要翻转的数,把这个k这个数和它们前面以及后面断开形成一个独立k个数,然后把这个k个数翻转,翻转以后,再连接起来。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListN..

2022-02-27 08:37:58 552

原创 移除链表元素(LeetCode203)--链表(Java)

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * }.

2022-02-26 09:12:58 346

原创 滑动窗口最大值(LeetCode239)---队列(Java)

class Solution { public int[] maxSlidingWindow(int[] nums, int k) { //如果数组的长度为0或者k的值为0,那么直接返回0即可 if(nums.length == 0 || k == 0){ return new int[0]; } //建立一个双端队列用于存放过程中的值 Deque<Integer&.

2022-02-24 23:04:11 181

原创 用栈实现队列(LeetCode232)---队列(Java)

class MyQueue { //先建立两个栈,stackIn用于模拟入队 Stack<Integer> stackIn; //stackIn用于模拟出队 Stack<Integer> stackOut; public MyQueue() { //初始化这两个栈 stackIn = new Stack<Integer>(); stackOut = new Stack<Integer&..

2022-02-21 22:57:15 171

原创 接雨水( LeetCode 42 )---栈 (Java)

package com.tang.project1.utils;import java.util.Stack;public class LeetCode42 { static class Solution { public static int trap(int[] height) { //砖头的数目小于3都没法组成凹槽,没法装水,所以水的面积是0 if(height.length < 3) return 0; ..

2022-02-14 23:32:28 300

原创 每日温度( LeetCode 739 )---栈 (Java)

package com.tang.project1.utils;import java.util.Stack;public class LeetCode739 { static class Solution { public static int[] dailyTemperatures(int[] temperatures){ //用栈存放运算中的数据的下标 //比如示例1中的73,在栈中存放的是0,74在栈中存放的是1 Stack&lt.

2022-02-12 09:27:43 301

原创 ( LeetCode 946 )验证栈序列 --栈 (Java)

按照pushed数组的顺序入栈,按照poped数组的顺序出栈,最后栈中为空就可以返回true,否则返回false。class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { Stack<Integer> stack = new Stack<Integer>(); int index = 0; //一直遍历pus.

2022-02-11 00:19:18 250

原创 155. 最小栈---栈(Java)

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。import java.util.Stack;public class LeetCode155 { static class MinStack{ //存储所有的数据 Stack<Integer> stack =

2022-02-09 08:59:08 470

原创 leetcode 20. 有效的括号 --栈(Java)

class Solution { public boolean isValid(String s) { //括号都是一对一对的,如果字符串的长度不是2的倍数,那么肯定不匹配了,直接返回false了 if(s.length() % 2 != 0){ return false; } //创建一个栈存放字符对象 Stack<Character> stack = new Stack<Charac.

2022-02-06 23:36:12 235

原创 142.环形链表---链表(Java)

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。/** * Definition for singly-linked list. * class ListN

2022-02-06 23:13:59 426

原创 138. 复制带随机指针的链表---链表(Java)

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链

2022-02-02 16:17:05 141

原创 142.环形链表||---链表(Java)

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。公式推导:建立快慢指针,快指针每次走两步,慢指针每次走一步,快慢指针第一次在节点5处相遇。1.从头节点到环

2022-02-02 15:27:28 1169

原创 86. 分隔链表---链表(Java)

思路:建立两个链表,大链表和小链表。大链表用于存储那些大于等于x的值,小链表用于存储小于x的值。然后把小链表拼接在大链表前面,并且令大链表的尾节点的next指针指向null。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = v.

2022-02-02 14:36:41 1140

原创 160.相交链表---链表(Java)

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入):intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0listA - 第一个链表listB - 第二个链表skipA - 在 lis

2022-01-10 22:25:56 681

原创 21.合并两个有序链表---链表(Java)

合并两个有序链表

2022-01-09 12:05:53 561

原创 206.反转链表与Fibonacci数列---链表(Java)

206.反转链表题目描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。思路:可以用递归来解决。递归通过Fibonacci数列来复习递归。Fibonacci数列的定义是:如果用递归写Fibonacci数列,则int fib(int n){ if(n == 1 || n == 2){ return 1; } return fib(n - 1) + fib(n - 2); }1.如果n = 5,则fib(5).2.计算fib(5),因为5不等于1,也

2022-01-09 09:29:27 352

原创 92.反转链表---链表(Java)

解题思路:主要运用了链表的头插法,实现链表的翻转。1、我们定义两个指针,分别称之为 g(guard 守卫) 和 p(point)。我们首先根据方法的参数 m 确定 g 和 p 的位置。将 g 移动到第一个要反转的节点的前面,将 p 移动到第一个要反转的节点的位置上。我们以 m=2,n=4为例。2、将 p 后面的元素删除,然后添加到 g 的后面。也即头插法。3、根据 m 和 n 重复步骤(2)4、返回 dummyHead.next作者:mu-yi-cheng-zhou-2链接:https://.

2022-01-05 23:31:05 488

原创 IDEA 断点调试 debug

1.行断点在要打断点的那一行左侧,鼠标左键点击,debug模式运行程序,就会跳到那一行。点resume Program跳过可以这个断点,跳到下一个打断点的地方。2.详细断点(源断点)按住shift,然后点鼠标左键,出现这个面板,点击Done,debug模式运行。然后控制台会有输出表明断点是哪一行被触发的,触发断点具体的类和方法。Suspend用于多线程调试,ALL运行到这个地方就会停止,Thred运行到当前线程就会停止。Condition是判断条件,当触发了某个条件才会停止。3.方法断点

2021-12-05 22:45:08 2087

原创 《图解HTTP》思维导图

第1章:第2章:第3章:第4章:第5章:第6章:第7章:第8章:第9章:

2021-11-26 11:26:22 1135

转载 JDK8新特性Lambda表达式

1.Lambda表达式&函数式接口1.1 什么是Lambda表达式?Lambda表达式可以理解为一种匿名函数的代替,lambda允许将函数作为一个方法的参数(函数作为方法参数传递),将代码像数据一样传递,目的是简化代码的编写。1.2 什么是函数式接口?lambda表达式需要函数式接口的支持,所谓函数式接口是指只有一个抽象方法,另外JDK8也提供了一个注解,帮助我们编译时检查语法是否符合@FunctionInterface.1.3 Lambda表达式使用案例lambda表达式的基本语法:

2021-06-23 23:24:18 580

原创 Linux学习

1.liunx简述1.1 linux操作系统的组成

2021-06-19 21:58:51 653

原创 Docker学习(五)容器数据卷

容器数据卷1.什么是容器数据卷:进行容器的持久化和同步操作!容器间也是可以数据共享的!docker的理念回顾将应用和环境打包程一个镜像!数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化MySQL,容器删了,删库跑路!需求:mysql数据可以储存在本地!容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面!使用数据卷#方式一:直接使用命令来挂载 -vdocker run

2021-04-24 16:00:01 125

原创 Docker学习(四)

可视化什么是portainer?Docker图形化界面管理工具!提供一个后台面板供我们操作!docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer然后进入了一个登陆的页面,输入密码即可进入。选择local就可以看到本地下载的镜像情况。联合文件系统UnionFS(联合文件系统):Union文件

2021-04-10 22:11:52 117

空空如也

空空如也

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

TA关注的人

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