自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode 394 字符串解码

394. 字符串解码 - 力扣(LeetCode)

2025-02-14 10:46:40 275

原创 拓扑排序---Leetcode 207 课程表

【代码】拓扑排序---Leetcode 207 课程表。

2025-02-13 11:51:23 93

原创 mysql查缺补漏

而每一个页的存储空间是有限的,如果data数据较大时将会导致每个节点(即一个页)能存储的key的数量很小,当存储的数据量很大时同样会导致B-Tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率。select * from where name = "Anc",需要现在二级索引的b+shu找到其主键,然后在聚集索引找到该id下的该行数据,称为回表查询。行级锁的粒度更小,仅对相关的记录上锁即可(对一行或者多行记录加锁),所以对于并发写入操作来说, InnoDB 的性能更高。

2025-02-10 19:06:27 1776

原创 Leetcode Hot100 81-85

思路:遇到陆地就ans+1,然后把周围的陆地都变为海洋。

2025-02-10 14:35:45 237

原创 Leetcode Hot100 76-80

记录每个字母的最远距离,如果这一串单词的最远距离都在一个right内,就把它加入到list种。思想:每次在上次能跳到的范围内选择一个能跳的最远的位置作为下次的起跳点。改:dp[i] = dp[i-1][j-1]+1。增:dp[i] = dp[i-1][j]+1。删:dp[i] = dp[i][j-1]+1。需要边界和最大值两个变量。

2025-02-09 16:31:41 251

原创 Leetcode Hot100 71-76

【代码】Leetcode Hot100 71-76。

2025-02-07 13:57:42 124

原创 G1收集器

G1收集器:1.高吞吐量和低延迟(高并发)2.将堆划分为多个大小相等的region3.整体是标记+整理算法,两个region间是复制算法,所以不会产生碎片G1不再坚持固定大小以及固定数量的分代区域划分,而是把连续的Java堆空间划分为多个大小相等的独立区域(Region),每个Region都可以成为 Eden空间、、老年代空间。这种思想上的转变和设计,使得G1可以面向。

2025-02-06 12:54:28 604

原创 Leetcode Hot100 61-65

法二:创建新的Node节点,Node节点包括val和min。自己实现栈,可以用单链表的头插法。一个栈正常存,另一个存最小值。

2025-02-04 16:21:37 194

原创 Leetcode Hot100 56-60

此时有序部分用二分法查找。无序部分再一分为二,其中一个一定有序,另一个可能有序,可能无序。思路:将数组一分为二,其中一定有一个是有序的,另一个可能是有序,也能是部分有序。

2025-02-03 13:23:40 231

原创 java基础---反射

是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。首先获取该类的字节码文件,然后使用字节码文件的方法,反向获取对象的信息。

2025-02-02 22:31:39 658

原创 Leetcode Hot100 51-55

细节:添加path的时候需要new创建一个新的值,因为是值传递,只传path,会都指向该地址。当回溯对象是固定时,for遍历只需遍历固定元素。1.不是组合,递归的时候是begin+1。2.用String数组存储电话号。

2025-02-02 17:35:34 217

原创 数据结构---前缀和

但如果 targetSum=0,假设根节点值为 1,如果先把 cnt[1] 增加 1,再把 ans 增加 cnt[s−targetSum]=cnt[1]=1,就相当于我们找到了一条和为 targetSum=0 的路径,但和为 0 的路径是不存在的。也可以这样理解,要想把任意路径和都表示成两个前缀和的差,必须添加一个 0,否则当路径是前缀时(从根节点开始的路径),没法减去一个数,具体见 前缀和及其扩展 中的讲解。答:如果不恢复现场,当我们递归完左子树,要递归右子树时,cnt 中还保存着左子树的数据。

2025-02-01 15:16:26 399

原创 从前序与中序(后序与中序)遍历序列构造二叉树

前序的第一个元素为根节点,因为中序为左根右,所以通过中序的根节点3,知道左节点有1个,右节点有3个,通过左右节点的个数大小,再切割前序。1.使用HashMap来保存中序遍历数组对于元素的下标。2.通过传入数组索引参数下标来实现复制数组的操作。细节:1.索引统一好左闭右开区间。前序 3 9 20 15 7。中序 9 3 15 20 7。初始版本(复制数组)

2025-02-01 12:43:02 533

原创 Leetcode Hot100 31-35

答:虽然题目是 int 类型,但开始递归的时候,left 需要比所有节点值都要小,right 需要比所有节点值都要大,如果节点值刚好是 int 的最小值/最大值,就没有这样的 left 和 right 了,所以需要用 long 类型。先递归右子树,再递归左子树,传入一个depth,然后第一个depth==size,就加入。问:为什么 Java 等语言要用 long 类型?法二:层序遍历+最后一个元素加入list。1.需要右边子树的所有节点都大于目前结点。正确的做法:设置上下限。

2025-01-31 23:13:06 194

原创 Leetcode Hot100 26-30

一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。put操作:若Node存在,则修改Node.value的值,若不存在,则添加,判断链表容量是否要删除最后的Node,然后添加到链表最前面。LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的。get操作:根据key取出Node,若Node存在,并将Node放在链表最前面。,选择最近最久未使用的页面予以淘汰。

2025-01-29 15:31:33 133

原创 Leetcode hot100 21-26

注意:lastnode(每轮开始翻转的前的一个结点)每次的位置都需要更新,该位置就是lastnode的下一个位置,需要保存。循环条件: 有一个不是空节点,或者还有进位,就继续迭代。思路:先找到中间值,然后翻转后面的链表,然后一一比较。找到中间的结点分开,递归调用两边,然后两边merge。需要添加哨兵,为了left=1的情况。法一:归并排序(自顶向下)法二:归并排序(自底向上)

2025-01-28 17:09:25 154

原创 Leetcode hot100 16-20

然后 R 更新为 R=R∗nums[i],其中变量 R 表示的就是索引右侧数字的乘积。1.用一个长为 4 的方向数组 DIRS=[(0,1),(1,0),(0,−1),(−1,0)] 分别表示右下左上 4 个方向。具体来看,当矩阵大小n为偶数时,取前n/2行、前n/2列的元素为起始点;当矩阵大小n为奇数时,取前n/2行、前(n+1)/2列的元素为起始点。两种情况合二为一,把 di 更新为 (di+1)mod4。思路:把上下左右方向存入一个二维数组中,若遇到边界或者碰到已经遍历过的,则换一个方向。

2025-01-24 15:05:53 316

原创 Leetcode hot100 11-15

2.逻辑:右边大于左边的则合并,不然添加。3.数据结构使用List结构。细节:1.按照左端点排序。

2025-01-24 00:29:58 110

原创 Leetcode hot100 6-10

比较头尾,若i+j大于target,则j--,若i+j大于target,则i++若三数之和,则i遍历数组,j=i+1,k=n-1,作两数之和操作。

2025-01-22 15:00:49 208

原创 Leetcode hot100 1-5

有思路,大致思路(判断num-1是否在set里)是对的,但是num-1是否在set应该是外层判断条件,用来剪枝,跳过大部分情况,里面判断条件是num+1是否在set里。思路总结:首先都存在Hashset中,访问一个数字,看是否是序列头(前面num-1是否存在在Hashset中),然后再通过num+1计算连续长度。

2025-01-21 16:20:34 222

原创 算法---动态规划

当前节点选择不偷:当前节点能偷到的最大钱数=左孩子能偷到的钱+右孩子能偷到的钱当前节点选择偷:当前节点能偷到的最大钱数=左孩子选择自己不偷时能得到的钱+右孩子选择不偷时能得到的钱+当前节点的钱数。

2025-01-20 11:59:58 2406

原创 数据结构---二叉树

intval;

2025-01-20 11:38:17 515

原创 算法---贪心算法

我们可以「贪心」地选择距离最后一个位置最远的那个位置,也就是对应下标最小的那个位置。因此,我们可以从左到右遍历数组,选择第一个满足要求的位置。在具体的实现中,我们维护当前能够到达的最大下标位置,记为边界。我们从左到右遍历数组,到达边界时,更新边界并将跳跃次数增加1。找到最后一步跳跃前所在的位置之后,我们继续贪心地寻找倒数第二步跳跃前所在的位置,以此类推,直到找到数组的开始位置。贪心问题:想清楚局部最优是什么,如何推导出全局最优。

2025-01-20 11:10:51 203

原创 数据结构---栈

Stack:java里Stack的peek方法是返回栈顶的元素但不移除它。但Stack的pop方法是会移除的。

2025-01-20 11:07:50 222

原创 算法---滑动窗口

3、此时,我们停止增加right,转而不断增加left指针缩小窗口[left,right),直到窗口中的字符串不再符合要求(不包含T中的所有字符了)。同时,每次增加left,我们都要更新一轮结果。1、我们在字符串S中使用双指针中的左右指针技巧,初始化left=right=0,把索引左闭右开区间[left,right)称为一个「窗口」。2、我们先不断地增加right指针扩大窗口[left,right),直到窗口中的字符串符合要求(包含了T中的所有字符)。

2025-01-19 23:42:59 272

原创 算法---双指针(数组+链表)

若向内移动短板,水槽的短板min(h[i],h[j])可能变大,因此下个水槽的面积可能增大。若向内移动长板,水槽的短板min(h[i],h[j])不变或变小,因此下个水槽的面积一定变小。因此,初始化双指针分列水槽左右两端,循环每轮将短板向内移动一格,并更新面积最大值,直到两指针相遇时跳出;注:快慢指针,快指针如果遇到要保留的元素,就给slow指针。注意:此题采用暴力解法会超时,应该使用双指针,

2025-01-19 23:37:29 229

原创 7.VIM常用命令

7.VIM两种模式:普通模式(命令模式):操作文件 插入模式:编辑 可视化模式:选择文本hjkl:左上下右ctrl f:向上翻页 ctrl b:向下翻页G:最后一行 gg:第一行i:光标位置前面插入 a:光标位置后面插入 o:直接光标下一行插入 x:删除光标所在位置 dd:删除一行 u:撤销dw:移出光标之后所在单词 b:跳跃之前单词首字母 e:跳跃单词尾字母 w:跳跃之后单词首字母shift+6:本行开头 shift+4:本行末尾剪贴粘贴一行:dd p 复制单词:yw

2022-05-06 20:16:01 255

原创 6.用户与权限

6.用户与权限用户id:UID系统账户:不放在root下,防止黑客黑进root以后,把所有东西都黑了用户名:密码:UID:GID:备注:home目录:shell系统账户的UID<500,用户的UID>5006.1创建、删除、更改创建:sudo useradd 用户名删除:sudo userdel 用户名更改:sudo passwd更改多个用户密码Linux下/etc/passwd 和/etc/shadow详解Vincent江的博客-..

2022-05-06 20:15:19 226

原创 5.环境变量

5.环境变量5.1环境变量若命令放在环境变量里,在其他地方也可以直接使用该命令,因为在执行命令前,会先去环境变量那里查找是否有该命令5.2全局变量与局部变量如ls,cd在所有路径下都可以使用的为全局系统变量,只能自己用的为局部用户变量printenv:输出所有环境变量printenv 左边的变量:右边的值左边为系统变量,右边为指向值(有点类似DEFINE)$系统变量(都为大写) 即为右边的值如cd $HOME == cd /home/tom/5.3设置..

2022-05-06 20:14:01 179

原创 4.父子shell

4.父子shell4.1父子shell输入两次bash(shell的一种,就是黑框)命令,打开了三个(虽然在同样界面)PPID是PID的父亲,PID由PPID创造出来的, 第一个的PID为第二个的PPID->第一个bash创造出来了第二个bash4.2 ;多条语句可以用 ;分开一行执行若加上括号则会放在子shell执行4.3sleep/jobsleep n:暂停n秒sleep n&:放在后台执行jobs -l:查看后台信息10秒内:1

2022-05-06 20:12:22 216

原创 3.Linux进阶命令

3.进阶命令3.1top/pstop:任务管理器ps:进程PID:进程标识符 ps -aux | grep 文件 查看文件进程详细信息杀死进程:kill PID3.2挂载挂载:创建一个临时虚拟的盘供用户使用如U盘插入电脑Window:Linux:u盘挂载点在根目录下的media里查看磁盘信息:sudo fdisk -l 设备真正根目录:/dev/sdb1 只是挂载点(映射)在media里mount:用于挂载Linux...

2022-05-06 20:10:46 493

原创 2.Linux基础命令

2.基础命令2.1terminaltom@tom-VirtualBox:~$ 用户名@机器名:当前用户目录(~) 等待用户输入~:相当于window->C:\Users$ :等待用户输入2.2lsls:显示文件常用:lsll = ls -a -l =ls -alls -a显示所有文件ls-hl 根据文件大小显示文件ls 限制搜索 *代替多个符号?代替一个符号元字符通配符 [a-x]只查找a到x字母之间的字母[!a-x ]查找a..

2022-04-27 10:27:30 2157

空空如也

空空如也

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

TA关注的人

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