自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 openGauss——锁机制概述

当一个线程尝试获取自旋锁时,如果锁已经被其他线程占用,那么这个线程会进入一个循环,不断检查锁是否可以获取,直到成功获取锁为止。然而,自旋锁在等待期间不会释放CPU,如果持有自旋锁的线程长时间不释放锁,那么等待的线程会一直占用CPU资源,导致CPU时间的浪费。行级锁:同一个事务可能会在相同的行上保持冲突的锁,甚至是在不同的子事务中。在此过程中,线程不会进入阻塞状态,而是保持活跃,通过反复检查锁的状态来实现锁的获取。简单来说,不同的锁之间可能会相互冲突,但一个事务内连续获取冲突的锁是没问题的。

2025-04-22 15:04:36 974

原创 openGauss——主备同步机制概述

在PostgreSQL流复制过程中,有三个进程协同工作:walsender进程、walreceiver进程和startup进程。walsender进程位于主节点,负责向备节点发送WAL记录;walreceiver和startup进程位于备节点,walreceiver用于接收主节点发送的WAL记录并写入磁盘上的XLOG文件,随后startup进程对这些WAL数据进行重放。三个进程共同协作,完成主备节点的整个流复制过程。walsender 负责将 WAL 记录从主服务器发送到 standby 服务器。

2025-04-22 15:03:28 536

原创 openGauss——SyncRepLock同步机制概述

lsn更新的时候可以一次性唤醒所有后台线程队列,避免唤醒期间队列又有更小lsn的后台线程插入,能够保证所有等待唤醒进程都根据lsn数组由WalSnder唤醒;后台线程在插入SyncRepQueue的时候通过加锁可以保证链表的有序性,所有的遍历和唤醒操作都是建立在链表有序这一大前提上;

2025-04-22 15:02:31 541

原创 openGauss——XLog日志基础解析

24=2^8=256,即使8位,两个十六进制,也就是LogSeg的低八位;结构进行字节流串在后面(Block data 和 Main Data);换句话说,对于LSN的低32位,除以16M能表示的容量,即使2。可以看到,对于上述第一行,有最新插入的一条XLOG信息;中找了一个位置,把相应的页面、物理位置信息记录了一下;结构体之后,使用相同的方法注册元组位图+实际数据部分(函数中,该函数会将该传入的data数据记录在。上述主体工作感觉也没有干什么,就是找了个在。字段进行对照,寻找各个字段对应的值,例如。

2025-04-22 14:55:23 954

原创 LeetCode 剑指 Offer II 061. 和最小的 k 个数对***

没有看出来是最小堆问题,光想着双指针怎么调整了。

2022-07-18 19:29:46 1939

原创 LeetCode 188. 买卖股票的最佳时机 IV***(double,need triple)

123题目的扩充

2022-07-13 18:59:01 415

原创 LeetCode1089. 复写零

先找到能到达的最大情况,然后反向向后移;

2022-06-17 16:09:00 425 1

原创 LeetCode 532. 数组中的 k-diff 数对

暴露了自己滑动窗口不太熟练的问题,双值有序不应该被卡住;

2022-06-16 19:17:46 381

原创 LeetCode 890. 查找和替换模式

直接模拟,没啥好说的,之前还想是不是可能有点其他的套路可以操作一下;

2022-06-13 14:21:50 1414 1

原创 LeetCode 926. 将字符串翻转到单调递增*

值得注意的是这个题目的LCS思路;可以转化为寻找一个序列的最长不下降子串,之后直接总长度-1,但是这样必定是n2n^2n2的复杂度;可以转为LIS问题;使用dp数组g,下标表示长度为i的序列,内容为长度为i的序列结尾元素为多少;通过二分可以将时间变为nlognnlognnlogn;...

2022-06-13 14:12:51 166

原创 LeetCode 1051. 高度检查器

学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。排序,还以为能用单调栈啥的,结果没用上;...

2022-06-13 14:08:33 131

原创 LeetCode 1673. 找出最具竞争力的子序列**

和题目同解决方案;是前驱方案;相当于寻找一个最小的非严格上升序列,保证前端元素尽可能地小;index代表已保存的位数;remain代表要删掉的个数;所以通过remain来确定,如果要保证前端元素尽可能小,最多能删除多少个;...

2022-06-10 22:25:49 1209

原创 LeetCode 1996. 游戏中弱角色的数量*

之前见过一道原题;卡在了单调栈上的第二维度排序上;

2022-06-10 21:35:42 477

原创 LeetCode 321. 拼接最大数***(double,need triple strongly)

涉及以下点:

2022-06-10 16:33:55 101

原创 LeetCode 255. 验证前序遍历序列二叉搜索树*

单调栈经典;如果用左右子树递归判断,会爆;

2022-06-10 14:45:31 139

原创 LeetCode 526. 优美的排列***(double,need triple)

DP记忆化搜索;难点在于两地方:利用位bit来表达那些位置用了,不用关心具体用的是谁;枚举1~n位,此时表示考虑第i位能有多少收益,dp[i][state];其中state代表状态值;枚举所有状态,但是注意,由于现在枚举到i位,总共填进去i个数,因此state是否判断需要统计已用多少个,是否是i个,也就是统计每个状态的bit 1的个数;对合法状态进行1~n的枚举,首先选择填进去的数字要符合题目条件,其次对于该数,也必须在state表示已用过;加起来就行;...

2022-06-09 20:11:05 184 1

原创 LeetCode 497. 非重叠矩形中的随机点**

随即问题,统计点,然后直接随机抽一个,算是哪个矩阵的几行几列。前缀和二分有个问题;首先,对于n个点,随机数生成的是0~n-1的一个值,实际寻找的时候一定要+1;例如,对于生成随机数4,其实是要求第五个点;对于,0,1,4,8;如果按照4来找,会找到第二个矩阵,实际上要找第五个点,应该找到第三个矩阵;同理,后序在该矩阵里,应该找5-4=1,第一个点;但是后续算坐标偏移,又应该剪1,麻烦的一笔;...

2022-06-09 15:12:57 136

原创 LeetCode 1155. 掷骰子的N种方法**(double,need triple)

完全背包问题,被卡的一塌胡涂;看了三叶的才知道和传统01写的大差不差;其实传递过去应该是一个阶梯形,但是从0开始遍历无伤大雅;

2022-06-08 21:39:09 103

原创 LeetCode 6638. 大礼包***

记忆化搜索,是没想到还能这么搜的;采用完全背包有6个维度,有个牛批的人居然做出来,这我他妈的是没想到的;DP感觉和记忆化搜索类似,是否是一种?

2022-06-08 20:38:43 109

原创 LeetCode 474. 一和零**(double,need triple)

多维dp,多个标准直接上多维,第一次见;

2022-06-08 19:27:17 108

原创 LeetCode 1049. 最后一块石头的重量 II**

很难得一道题。。。一环扣一环,我是傻逼。刚开始想的是选取每次选取最大值抵消结果无解;第二次想的是每次求离均值最大的两个元素进行抵消,但是发现还是不太行;官方给的答案是整体加上正负号求序列和,使得结果的绝对值最小;例如,对于a,b,c,d四块石头,可以挑选(a,c),(d,b),相当于(a-c),(d-b),但是还要将这两块石头加入,还要在前面加正负号,但是这样展开还是相当于在所有元素前加入正负号,因此可以分为两组,第一组为被减数,第二组减数,只有当两组数相差足够小,才能满足绝对值最小;所以如果有sum总和,

2022-06-08 17:25:25 153

原创 LeetCode 1037. 有效的回旋镖

直接向量叉乘就可以,自己还判断了三条斜率;

2022-06-08 16:08:01 118

原创 LeetCode 731. 我的日程安排表 II**

线段树区间最大值问题;

2022-06-07 21:10:16 380

原创 LeetCode 1824. 最少侧跳次数**

卡在了dp条件上,其实思路不难想;里面有一个坑,有两种情况:所以判断特别繁琐,简单的判定方式为:这样判断有一好处,第一个条件可以保证跳过来的点,在同一级中同水平必须可达,破除坑1,并且可以同时满足2,判断三个最小值;例如:1 oo1第一列第二个位置不可达,要求补充第二列;先判断当前是否有障碍,无障碍就直接从上一个地方跳过来;可以得到:1 oo o1 1第二列中,第一个位置不可达,第二个位置从上一个位置不可达,第三个可以从上一个位置可达;在判断是否可以从同级的其他地方跳过来;可以得到:1 o

2022-06-07 21:05:39 181

原创 LeetCode 875. 爱吃香蕉的珂珂**

哎,自己是真傻逼,没看到二段性;这么典型的二分没看出来,真傻逼啊。

2022-06-07 18:34:19 77

原创 LeetCode 307. 区域和检索 - 数组可修改**

区间单值修改+求和的题;这里要注意一下l,r和cl,cr的思想;求区间和的的l,r应该是固定的,通过缩小cl,cr来确定区间所处区间,cl,cr进行削减;总共有三种情况:

2022-06-06 21:12:48 97

原创 LeetCode 1109. 航班预订统计*

差分,这道题还没发用传统区间排序做,可能会爆时间,并且区间重合度过高,判断起来十分费劲,目测要从左至右一直判断时间点;

2022-06-06 14:06:20 165

原创 LeetCode 1094. 拼车

这道题也可以用差分数组来算,但是个人觉得很取巧,原因是数组范围;如果对于数组范围为负数到正数,并不是给出的0~1000,差分数组方式并不是很合适;差分思想,区间起始结束进行标记,直接一边遍历中求最大值是否超过;差分必然快,因为On复杂度;...

2022-06-06 13:56:33 101

原创 LeetCode 829. 连续整数求和*

szy太强了;先确定范围,从2~len开始枚举长度;len,是从1,…,n,的最大长度,可以约等于为N\sqrt{N}N​;这是,szy大佬提供了一个思路,不如用前缀和,如果项数为len,起始元素为a;则满足a∗len+(1+....+len)=na*len+(1+....+len)=na∗len+(1+....+len)=n;判断a是否为整数存在就行;...

2022-06-03 19:12:25 112

原创 LeetCode 1277. 统计全为 1 的正方形子矩阵***

和211题同思路;唯一不同的是以ij为右下角的矩阵,dp内容为边长,l边长的矩阵可以由右下角生成出l个矩阵;

2022-06-03 00:07:59 112

原创 LeetCode 1146. 快照数组***(double,need triple)

二分卡了很久,这里简单说一下这种情况,手写二分恶心的情况基本上都碰到了;首先明确一下,vector第一层是index,第二层是pair,first为快照id,second为具体元素;由于这种方法的特殊性,会导致某一时刻的快照,如果后续没有新改变,则不会保存;例如,快照索引:[3,5,6];代表,0,1,2,为空,4和3的快照相同,因此二分的时候要格外注意;对于寻找idx的情况,应该寻找两种:针对于第二种情况,会分三种,第一种情况可以合并为第三种;......

2022-06-02 23:43:14 194

原创 LeetCode 1353. 最多可以参加的会议数目***(double,need triple)

用普通区间思路没法做,但是涉及到区间贪心问题;优先选择结束时早的,就可以腾出来时间给其他会议;因此可以按照时间轴遍历,把所有会议加入到时间轴中;pq保留所有已开始会议的结束时间;每遍历一个时间点,做两件事:pq相当于保存已开始但是未结束的会议;......

2022-06-02 22:25:10 101

原创 LeetCode 1190. 反转每对括号间的子串

采用字符栈可能更快一点;没啥建设性,感觉更trik一点;

2022-06-02 18:51:37 89

原创 LeetCode 390. 消除游戏**

跨区间模拟也行,但是题目不是这么做的,而且极其的麻烦;相当于只关心现阶段的队列元素个数,以及队头元素即可;

2022-06-02 18:34:29 299

原创 LeetCode 334. 递增的三元子序列**(double,need triple)

赋初始值的时候,已经满足second > first了,现在找第三个数third(1) 如果third比second大,那就是找到了,直接返回true(2) 如果third比second小,但是比first大,那就把second的值设为third,然后继续遍历找third(3) 如果third比first还小,那就把first的值设为third,然后继续遍历找third(这样的话first会跑到second的后边,但是不要紧,因为在second的前边,老first还是满足的)...

2022-06-02 17:20:28 84

原创 LeetCode 687. 最长同值路径*

自底向上,其实不太用修改;自己傻傻的修改了,不过总体思想和自己想的一样;

2022-06-02 16:44:15 83

原创 LeetCode 763. 划分字母区间

披着皮的区间合并,没什么可说的;直接记录开始和结束区间排序即可;

2022-06-02 15:55:19 90

原创 LeetCode 873. 最长的斐波那契子序列的长度**(double,need triple)

比之前见到的最长子序列问题更难;用常规的vector会爆时间,个人认为可能是随着序列的增加,会导致遍历unordered_map的时间会增大;题解思路是记录以(i,j)为结尾的最大长度;二维枚举i,j,寻找前面是否有arr[j]-arr[i],如果存在则存在一个三位的佩波那契数列[arr[j]-arr[i],arr[i],arr[j]];令arr[k]=arr[j]-arr[i];由(k,i)+1得到(i,j)的序列;这里注意一下,由于采用二维转一维的哈希标记...

2022-06-01 23:37:12 204

原创 LeetCode 1027. 最长等差数列

还是最长子序列问题,老生常谈;唯一不同的是O(n2)爆搜的时候需要进行map保存;据说和873题同思路;

2022-06-01 22:03:12 102

原创 LeetCode 1306. 跳跃游戏 III

本来以为是DP啥的,没想到普通BFS就可以。。。都不用双向BFS,我人傻了;

2022-06-01 21:16:58 292

空空如也

空空如也

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

TA关注的人

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