自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis知识

Redis主从是一主多从;Redis哨兵是一主多从+哨兵集群;Redis Cluster是多主多从。

2025-08-13 03:06:15 1048

原创 算法学习-Day 24-Aug.04.2025

对于子集问题,一个很重要的点是把所有的结点都记录下来,就是所求的子集的集合。

2025-08-05 09:52:24 213

原创 算法学习-Day 23-Aug.03.2025

该题确定终止条件时,可以明确,终止只有两种情况:sum大于target和sum等于target只有当sum == target时,才需要收集结果单层for循环依然是从startIndex开始,搜索candidates集合,但是由于可重复读取,不需要i+1剪枝优化的地方在于,如果是加和过后大于target,就不进行递归了,直接break。

2025-08-04 04:56:37 278

原创 算法学习-day 22-AUG.02.2025

处理的过程就是path收集每次选取的元素,相当于树形结构里的边,sum来统计path里元素的和。这道题的不同之处在于横向for循环的临界值是固定的i<=9。

2025-08-03 05:12:31 217

原创 算法学习-Day 22-Aug.01.2025

这个题依旧使用递归构建树,由于每次要返回一个结点来构建,因此第一步中,递归函数的返回值肯定是TreeNode,其次是确定停止的条件,当left>right时,证明已经遍历完毕了。最重要的是确定单层递归逻辑。

2025-08-02 06:20:33 203

原创 算法学习-Day 21-JUL.31.2025

首先从思路上这个题不用递归,只需要在二叉搜索树中寻找,找到一个合适的空位插入即可。首先是找到一个合适的空位,这个空位的父结点的pre,遍历过程中保证root!=null,如果当前root.val大于val就把root往左走,反之就往右走,注意进入循环的时候就把root赋值给pre。找到合适的位置之后,判断一下这个值该插入到pre的左边还是右边即可。

2025-08-01 04:59:28 272

原创 算法学习-Day 20-Jul.30.2025

二叉搜索树有一个特点是中序遍历的结果就是一个从小到大的有序数组,因此采取中序遍历然后维护一个result变量来存储最小值即可。

2025-07-31 11:39:05 312

原创 mysql学习笔记

事务Transaction是一组操作的集合,这些操作要么全部执行成功,要么全部不执行,他们作为一个原子单位提交或者回滚,用来保证数据的完整性和一致性。

2025-07-17 23:23:34 1236

原创 算法学习-Day 19-JUL.10.2025

较为简单,确定以tree1为基准进行合并就可以了。

2025-07-11 05:39:55 190

原创 算法学习-Day 18-JUL.09.2025

第一步:如果数组为0,说明是空结点第二步:如果不为空,那么取后序数组最后一个元素作为节点元素第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点第四步:切割中序数组,切成中序左数组和中序右数组第五步:切割后序数组,切成后序左数组和后序右数组第六步:递归处理左区间和右区间。

2025-07-10 09:02:47 183

原创 算法学习-Day 17-JUL.07.2025

核心思路为:判断当前结点是否为叶子结点,然后判断传进来的targetSum是否和结点值相同,如果相同,说明找到了,返回true,如果没有找到,返回false。java中的list是引用类型,把当前的path加入res,但是path是共享引用,接下来的递归还会修改他,导致res中的内容也被修改,所以要拷贝一份副本进去。在做这道题的时候,肯定会纠结递归函数的返回类型,由于要找到所有的合适的路径,因此需要遍历整颗树,但是不需要递归处理返回值,所以递归函数不需要返回值。(如 List、TreeNode),传的是。

2025-07-08 09:24:26 279

原创 算法学习-Day16-JUL.06.2025

后序遍历,第三步的处理逻辑是该结点的左叶子之和为左子树的左叶子之和+右子树的左叶子之后。判断是否为左叶子就是 结点的左叶子不为空,但是结点左叶子的左叶子的左右叶子均为空。

2025-07-07 11:16:34 175

原创 JUC并发编程学习笔记 - JUN.11.2025

《Java多线程与并发编程核心知识摘要》 本文系统梳理了Java多线程与并发编程的核心概念。主要内容包括: 进程与线程基础 进程作为资源分配单位,线程作为CPU调度单位 线程状态转换(新建、就绪、阻塞、等待、终止) wait与sleep的四大区别:所属类、锁释放、使用范围、异常处理 线程安全机制 同步控制:synchronized内置锁与Lock接口对比 锁升级过程:无锁→偏向锁→轻量级锁→重量级锁 并发工具:CountDownLatch、Semaphore、FutureTask 原子操作:CAS原理及AB

2025-07-07 04:42:14 985

原创 算法学习-Day15-JUL.05.2025

对于递归的理解一直不是很到位,先考虑BFS的做法,只要碰到叶子结点就返回深度即可。这里需要注意deque的实现是LinkedList和ArrayDeque,不是ArrayList。

2025-07-06 06:44:13 205

原创 算法学习-Day14-JUN.28.2025

前序遍历/后序遍历:层序遍历迭代方式,利用queue实现BFS。

2025-06-29 09:13:39 302

原创 算法学习-Day13-June.26.2025

方法一: 递归实现BFS创建一个list,里面每个元素都是一个list,然后递归实现BFS,将元素加到list中方法二:迭代方式--借助队列实现BFS核心思路是维护一个queue来记录每一层有几个结点,然后将这几个结点值加入一个list,再将这几个结点的子结点加入queue,迭代维护。

2025-06-27 10:33:11 336

原创 Java多线程

1.自定义线程类继承Thread类2.重写run方法,编写线程执行体3.创建线程对象,调用start()方法启动线程。

2025-06-25 06:56:04 420

原创 算法学习-Day12-June.24.2025

解体过程中主要有两种形式的二叉树:满二叉树和完全二叉树。:如果一棵二叉树只有度为0或者为2的结点,并且度为0的结点在同一层,那么这棵二叉树为满二叉树。若深度为k,则有2^k-1个结点。:完全二叉树汇中,出了最底层结点可能没填满外,其余每层结点数都达到了最大值,并且最下面一层的结点都集中在该层最左边的若干位置。若最底层为h层(h从1开始),则该层包含1~2^(h-1)个结点都有可能。二叉搜索树是有序树。若左子树不为空,则左子树上所有节点的值均小于根结点的值。

2025-06-25 06:49:20 309

原创 算法学习-Day 11-Jun.23. 2025

今天栈和队列收尾。

2025-06-24 06:04:44 251

原创 算法学习-Day10-JUN.22.2025

本期专题为栈与队列。

2025-06-23 05:31:09 365

原创 JVM学习笔记-Jun.15.2025

1. jvm内存模型讲解(腾讯)程序计数器,每个线程都有一个程序计数器,是线程私有的,程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。不会OOM。线程私有,每个方法在执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息,可能会有stackoverflow和oom;类似虚拟机栈,这里主要为虚拟机使用到的Native方法服务,本地方法执行时也会创建栈帧,同时也可能会出现Stackoverflow和oom。

2025-06-22 23:36:47 1041

原创 算法学习-Day9-JUN.18-21.2025-KMP补充版

记录下标i之前(包括i)的字符串中,有多大长度的相同前缀后缀如何构造next数组:1.初始化2.处理前后缀不同的情况3.处理前后缀相同的情况。注意:不管是在主程序中还是构造next数组,必须先处理前后缀不同的情况,然后再处理相同的情况。因为你要先回退不符合的情况。主程序的实现思路和next数组的实现思路基本相同,就是在判断到两字符不同时,使用while循环,将j会退到合理的情况(字符相同)或者为0。

2025-06-19 10:36:21 159

原创 算法学习-Day8-JUN.17.2025

反转字符串,很自然的一个想法就是双指针,一前一后两个指针交换即可,交换完之后left++,right--。

2025-06-18 05:44:46 252

原创 算法学习-Day7-JUN.16.2025

代码随想录。

2025-06-17 10:32:48 409

原创 算法学习-Day6-JUN.15.2025

Set只关心结合中有没有这个元素,判断方法为hashSet.contains(i),添加方法为hash.add(i);

2025-06-16 05:04:46 827

原创 算法学习-Day5-JUN.14.2025

链表题收尾!这道题我感觉有难度,看到时基本没有思路。核心点有两个:1.判断是否有换,方法很简单,定义一个指向头的双指针,快指针每次走两格,慢指针每次走一格,如果会相遇,说明有环,接下来找环的入口。如果没相遇,说明没环,返回null;2.如何找到环的入口:这里有两个难点,一. 首先为什么slow走的节点数为x+y而不是x+若干环的长度+y,这里fast的指针速度是slow的两倍,假设他们同时从环形入口节点处出发,slow走一圈,fast走两圈。在实际情况中,slow进入环时,fast一定在环内了,因此在slo

2025-06-15 02:23:27 323

原创 算法学习-Day4-JUN.13.2025

今天我们希望将链表题进行收尾,加油!!!

2025-06-14 08:19:13 619

原创 算法学习-Day3-JUN.12.2025

删除节点:将前一节点的next指针指向下下节点 O(1)添加节点:修改next指针的指向 O(1)数组的插入和删除时间复杂度为o(n). 查询为o(1)链表的插入删除时间复杂度为o(1) 查询为o(n)链表的类型有:单链表,双链表,循环链表。

2025-06-13 03:31:33 261

原创 算法学习-Day2-JUN.11.2025

二分法,双指针,滑动窗口,模拟行为与前缀和是最主要的几种方法。java二维数组的内存空间不连续,对于nums[3][4]而言,nums[0],nums[1]...本身都是独立的数组对象,所以内存空间中也不连续。但是nums[0]中的元素地址是连续的,因为是一维数组。c/c++中是连续的。

2025-06-12 05:05:15 816

原创 算法学习-Day1-JUN.10.2025

数组是存放在连续内存空间上的相同类型数据的集合,因此数组下标从0开始,且内存空间的地址连续,在删除或者添加元素时,会改变其他元素的地址。二维数组中,C++是连续分布的,但是java不是。

2025-06-11 06:54:19 352

原创 Rookie Shawn 的算法学习之路

2025.JUN.10. 开始自己的全新学习之旅,万事开头难,先给自己定一个小目标,每天搞定三道题,gogogo 出发喽!

2025-06-11 03:12:03 107

空空如也

空空如也

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

TA关注的人

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