自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法刷题记录-图(LeetCode)

首先对边缘使用dfs算法将所有的1变为0,然后统计剩余的1的数量即可。本算法存在优化空间,其实只要第一次清除完边缘,剩下每次碰到1,+1即可。对于起始点,每次对八个方向进行判断查看是否有可行的下一个点。如果遍历完成则返回true。以腐烂的橘子作为起始点,使用BFS逐级向外拓展,并时刻使用cnt记录良好的橘子的数量。对8个方向依次遍历,只要存在可以攻击的棋子即立即返回。

2023-10-01 16:15:18 195

原创 C++面试问题

在C++中,可调用类型是指可以被调用的类型,包括以下几种:函数指针类型:指向函数的指针。成员函数指针类型:指向类的非静态成员函数的指针。函数对象类型:实现了函数调用运算符()的类对象,也称为仿函数。Lambda表达式类型:一种匿名函数,可以用于创建临时的可调用对象。std::function类型:是一个通用的可调用对象包装器,可以用于存储任意可调用类型的对象,包括函数指针、成员函数指针、函数对象、Lambda表达式等。

2023-09-23 17:27:55 273

原创 算法刷题记录-树(LeetCode)

在遍历时带有层数信息以及路径信息即可,通过DFS遍历获取最深层的节点以及其路径,然后通过从头到尾遍历确认那一层是最后的公共节点。每次遍历时,带着先前节点的最大值。若当前节点值大于等于先前的最大值,则结果+1,并更新最大值。递归遍历其左右子节点。首先,需要通过dfs算法找到从原点到目标点的路径。对于从原点到目标节点的路径。考虑中序遍历的性质即可。

2023-09-07 17:20:23 424

原创 算法刷题记录-双指针/滑动窗口(LeetCode)

即:A出现4次 + B出现6次 + C出现6次 + D出现4次 = 20。通过上面的例子,我们将问题转换为。

2023-09-05 11:34:24 805

原创 算法刷题记录-DP(LeetCode)

cache[i][0]表示第i个字符是0的变换次数,cache[i][1]表示第i个字符是1的变换次数。根据题意可知,字符有0和1两种状态,所以我们维护一个二维的cache数组来记录每个字符的状况。,则 Alice 赢得游戏,返回true,否则 Bob 赢得游戏,返回 false。,说明此时至少凑成了长度为 333 的斐波那契数列,同时结合状态定义,可以使用。同时又由于所有石子总和为奇数,堆数为偶数,即没有平局,所以先手必胜。具体的,对于本题,由于石子堆数为偶数,因此先手的最开始局面必然是。

2023-09-01 21:08:10 224

原创 算法刷题记录-Hash(LeetCode)

范围内2的幂的字符串表示的长度存入HashMap中,并将其具体值存入HashSet中。将新输入的数字转化为字符串,首先判断hashmap中是否存在长度为k的2的幂,若无则一定不可以重组为2的幂。若存在,则对长度等于字符串的2的幂的每个字符串逐个比较字符数量,若一致则存在返回ture。Hashset有个特点remove的元素不在set里面的话,是删除不了什么东西的。例如题目中的样例,time me bell,删除ime 的话是什么都不会发生的。,用于保存当前时间t的票型,定义。用于存储在不同时间下的领先者。

2023-09-01 21:07:51 83

原创 算法刷题记录-其他类型(LeetCode)

我们反过来想,没重叠,就要满足:绿区间的左端,落在蓝区间的屁股的后面,反之就有重叠:绿区间的左端

2023-09-01 21:07:30 95

原创 算法刷题记录(LeetCode 451-480)

枚举到 1:满足 nums[i] < k,说明对于 i 而言,后面有一个比其大的元素(满足 i < k 的条件),同时这个 k 的来源又是因为维护「单调递减」而弹出导致被更新的(满足 i 和 k 之间,有比 k 要大的元素)。枚举 k:由于 k 是 132 结构中的中间值,这里的分析逻辑和「枚举 i」类似,因为遍历是单向的,我们需要找到 k 左边的 i,同时确保 [i,k] 之间存在比 i 和 k 大的数字。由于我们的比较逻辑只针对 i 和 k,而 i 是从后往前的处理的,必然会被遍历到;

2023-08-19 09:33:45 43

原创 算法刷题记录(LeetCode 721-750)

【代码】算法刷题记录(LeetCode 721-750)

2023-08-08 16:21:15 46

原创 算法刷题记录(LeetCode 751-780)

对于「有解」、「有一定数据范围」同时「层级节点数量以倍数或者指数级别增长」的情况,「双向 BFS」的搜索空间通常只有「朴素 BFS」的空间消耗的几百分之一,甚至几千分之一。,如果是奇数,就是左孩子,那就应该与父亲相同,否则相反。同时从两个方向开始搜索,一旦搜索到相同的值,意味着找到了一条联通起点和终点的最短路径。所以,我们要判断某一个位置,就要先求它的父亲,然后根据位置判断是否取反即可。,而0异或一个数不改变值,所以我们将k%2取反再与父亲异或即可。可以采用递归:如果是第一层,直接返回0,否则求它的父亲。

2023-08-02 17:50:52 60

原创 算法刷题记录(LeetCode 691-720)

【代码】算法刷题记录(LeetCode 690-720)

2023-08-02 17:48:47 63

原创 算法刷题记录(LeetCode 661-690)

【代码】算法刷题记录(LeetCode 661-690)

2023-07-24 15:21:46 58

原创 算法刷题记录(LeetCode 601-630)

要注意给一个额外空间,以及rear是插入的地方。

2023-07-20 12:32:01 49

原创 算法刷题记录(LeetCode 631-660)

【代码】算法刷题记录(LeetCode 631-660)

2023-07-15 17:36:38 66

原创 算法刷题记录(LeetCode 571-600)

为什么用ArrayList?因为不需要重写hash 和 equals方法。要记录当前最大的出栈数以及最左的发生出栈的位置。

2023-07-15 17:34:53 85

原创 算法刷题记录(LeetCode 541-570)

【代码】算法刷题记录(LeetCode 541-570)

2023-07-04 18:22:56 44

转载 ElasticSearch

我们可以通过搜索id,来获得相应的数据,也能删除数据。你买了一本书,书的目录其实也是正排搜索。假设现在我要搜苹果俩字,那么他会对这张表格中每一行的数据做匹配,去查找一下,是否包含苹果这两个字,从第一条匹配到最后一条,如果一张表中数据量不多,几万,十几万,那么问题不大,但是一旦数据量有上百万,上千万,那么全表扫描这种的搜索性能就会有影响。其次,这个时候我想搜索苹果iPhone,那么我们无法把这词汇拆开再到数据库去搜索。

2023-06-28 19:33:36 85

原创 使用Kubespray配置Kubernetes

在升级python版本后,yum依赖的python默认版本变为了python3。其中的x是原先系统中存在的python版本。将生成的Master Node公钥置于。使用如下命令生成ssh keygen。安装python 3以及git。检查python版本更改成功。改用wget 下载然后再解压。生成的ssh-key处于。

2023-06-27 19:15:15 420

原创 算法刷题记录(LeetCode 510-540)

例如 a[i]=3 len(a)=5 a[i+1]=3+5=8!

2023-06-24 12:00:26 65

原创 算法刷题记录(LeetCode 480-510)

【代码】算法刷题记录(LeetCode 480-510)

2023-06-23 11:13:03 94

原创 算法刷题记录(LeetCode 421-450)

本题的一个优化切入点为「路径只能往下」,因此如果我们转换一下,统计以每个节点为「路径结尾」的合法数量的话,配合原本就是「从上往下」进行的数的遍历(最完整的路径必然是从原始根节点到当前节点的唯一路径),相当于只需要在完整路径中找到有多少个节点到当前节点的路径总和为。targetSum。在「解法一」中,我们统计的是以每个节点为根的(往下的)所有路径,也就是说统计的是以每个节点为「路径开头」的所有合法路径。实际上,如果我们按照「右端点从小到大」的顺序处理询问,其每个询问对应的「最右区间的左端点」也具有单调特性。

2023-06-18 11:32:28 60

原创 Redis面试问题

string类型的值大于10kbhash、list、set、zset元素个数超过5000个缓存穿透是指高并发场景下,某一个key被高并发访问,然而缓存中没有这个key对应的数据,为了健壮性,我们的程序会到数据库中进行读取,然而数据库中也没有相应的数据,这会导致缓存这依然为空,这就会导致大量的无效请求打到数据库上,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。严重的情况下会影响线上业务。

2023-06-16 14:27:41 50

原创 操作系统复习

内存分页(Paging)是将物理内存划分成大小相等的固定块(通常是4KB),称为页面(Page),将逻辑地址(也称虚拟地址)按页面大小划分为大小相等的块,称为页(Page)。将每个页映射到物理内存的一个页面中。当程序访问逻辑地址时,操作系统将其转换为物理地址并进行访问。

2023-06-14 23:22:58 316

原创 算法刷题记录(LeetCode 390-420)

CSAPP第一章有介绍2’s Comp. -> Unsigned,也就是用Unsigned的大正数表示Signed负数。举个例子,8位int中-1表示为0b11111111(T),无符号整数0b11111111(U)表示为。先转换成大正数,以无符号整形表示。该无符号整形与原始有符号负数的2进制标是是一样的。即可转化为一个大正数,二者的二进制表示相同。在这里32位整形则将原始负数num加上。,二者在计算机中二进制表示相同,差值为。因此先在负数的基础上加上。确定每一个都是战舰的头部。

2023-06-09 14:30:11 58

原创 算法刷题记录(LeetCode 361-390)

对于概率算法,代码往往都是很浅显的,但是这种问题的关键在于证明,你的算法为什么是对的?为什么每次以 1/i 的概率更新结果就可以保证结果是平均随机的?先说结论,当你遇到第 i 个元素时,应该有 1/i 的概率选择该元素,1 - 1/i 的概率保持原有的选择。

2023-06-09 14:29:13 44

原创 算法刷题记录(LeetCode 331-360)

简单来说,就是在遍历每个数 nums[i] 的同时,维护一个具有单调性的 f[] 数组,其中 f[len]=x 代表长度为 len 的最长上升子序列最小结尾元素为 x,可以证明 f 数组具有单调性(看 前置🧀),因此每次可以通过二分找到小于 nums[i] 的最大下标,来作为 nums[i] 的前一个数。作为一个数组,在这个数组上计算 LIS 的长度就是答案。因为两个宽度相同的信封不能相互包含的,这个子序列就是最优的嵌套方案。这个解法的关键在于,对于宽度。相同的情况,则按照高度。相同的数对,要对其高度。

2023-06-08 11:12:17 32

转载 JAVA面试问题

自旋锁原理非常简单,如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态,它们只需要等一等 (自旋) ,等持有锁的线程释放锁后即可立即获取锁,这样就避免用户线程和内核的切换的消耗。线程自旋是需要消耗 cpu 的,说白了就是让 cpu 在做无用功,如果一直获取不到锁,那线程也不能一直占用 cpu 自旋做无用功,所以需要设定一个自旋等待的最大时间。

2023-05-26 19:37:54 260

原创 算法刷题记录(LeetCode 180-210)

【代码】算法刷题记录(LeetCode 180-210)

2023-05-20 14:18:07 32

原创 算法刷题记录(LeetCode 151-180)

【代码】算法刷题记录(LeetCode 151-180)

2023-05-16 10:26:39 40

原创 算法刷题记录(LeetCode 剑指Offer)

i ++;

2023-04-15 11:23:27 35

原创 算法刷题记录(LeetCode 121-150)

关键在于是否允许节点分裂,分裂则两个子节点都计数,但是允许分裂的的路径只能是从当前出发作为根->子的路径。要点:使用HashMap加快搜索,不要忘了null。

2023-04-05 14:31:15 86

原创 算法刷题记录(LeetCode 91-120)

【代码】算法刷题记录(LeetCode 91-120)

2023-03-31 10:11:42 57

原创 算法刷题记录(LeetCode 61-90)

比较是因为-128 到 127 是直接在缓存池中的,超过这个数字的比较如果用。这道题用JAVA完成时,一定要记住Integer是对象,平常能用。

2023-03-24 15:06:40 55

原创 算法刷题记录(LeetCode 31-60)

算法刷题记录(LeetCode 31-60)

2023-03-23 15:10:37 67

原创 算法刷题记录(Leetcode 241-270)

【代码】算法刷题记录(Leetcode 240+)

2023-03-23 15:04:44 49

原创 算法刷题记录(Leetcode 211-240)

【代码】刷题记录(Leetcode 201-240)

2023-03-23 14:50:41 53

原创 Regular Expressions

字符集合用于匹配一组字符中的任意一个字符。否定字符集合用于匹配不在指定字符集合中的任意一个字符。语法为[^abc],表示匹配任意一个字符,但不能是a、b或c中的任何一个。字符匹配指的是用来匹配具体字符的正则表达式语法,例如:a、b、1、2等。{n,m}:匹配前一个字符或字符集合出现次数在n和m之间(包括n和m)。{n,}:匹配前一个字符或字符集合至少出现n次。{n}:匹配前一个字符或字符集合恰好出现n次。*:匹配前一个字符或字符集合零次或多次。:匹配前一个字符或字符集合零次或一次。

2023-03-19 22:45:02 77

原创 JVM总结

在垃圾回收过程中,Parallel Scavenge 垃圾回收器会尽可能地利用多个线程来回收垃圾,以达到高吞吐量的目的,但这也会导致应用程序的停顿时间较长,不适合对响应时间要求比较高的场景。首先,Serial 垃圾回收器是一种单线程的垃圾回收器,其设计的初衷是用于较小的应用或者客户端应用,因为这些应用对于响应时间和吞吐量的要求不是特别高。Parallel Scavenge 垃圾回收器是一种多线程的垃圾回收器,其设计的初衷是为了在具有多核处理器的服务器上,实现高吞吐量的垃圾回收。

2023-03-18 15:17:10 126

原创 JAVA的类的使用

将 BigInteger 对象转换为 String 类型,可以使用 BigInteger 类的 toString() 方法,该方法返回表示 BigInteger 值的字符串。BigInteger 类提供了一系列方法来进行运算操作,包括加减乘除、取模、取幂、取反等操作,这些方法都返回一个新的 BigInteger 对象,不会修改原始对象。此外,BigInteger 类还提供了一系列重载的 toString() 方法,可以指定进制、符号等参数,来满足不同的需求。

2023-03-18 10:35:23 79

原创 数据结构复习

它是由 William Pugh 在 1990 年发明的,其思想类似于二叉搜索树,但它使用了一种随机化的方式来维护平衡性,从而避免了二叉搜索树中因为插入或删除元素导致树的失衡问题。具体来说,每个元素在原始链表中都有一个节点,同时还可以在多个层级上拥有指向其他节点的指针,这些指针可以跨越多个元素,从而快速跳过一些元素来进行查找。跳跃表的插入和删除操作相对于平衡树(如红黑树)来说要简单得多,并且其平均复杂度也相对较低(O(log n))。不过,跳跃表的空间复杂度较高,并且它的性能高度依赖于随机化的因素。

2023-03-18 10:28:04 23

空空如也

空空如也

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

TA关注的人

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