自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法笔记:离散化的两种实现方式

排序后的第 0 号元素 —> 获取原数组 index 1 —> 将原数组的 1 号元素修改为 0。排序后的第 1 号元素 —> 获取原数组 index 4 —> 将原数组的 4 号元素修改为 1。排序后的第 2 号元素 —> 获取原数组 index 2 —> 将原数组的 2 号元素修改为 2。排序后的第 3 号元素 —> 获取原数组 index 3 —> 将原数组的 3 号元素修改为 3。排序后的第 4 号元素 —> 获取原数组 index 0 —> 将原数组的 0 号元素修改为 4。

2023-05-18 16:57:43 332

原创 LeetCode 力扣官方题解 | 508. 出现次数最多的子树元素和

给你一个二叉树的根结点 root ,请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。对于每棵子树,其子树元素和等于子树根结点的元素值,加上左子树的元素和,以及右子树的元素和。用哈希表统计每棵子树的元素和的出现次数,计算出现次数的最大值 maxCnt ,最后将出现次数等于 maxCnt 的所有元素和返回。一个结点的 「 子树元素和 」 定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。哈希表和递归的栈空间均为 O(n)。

2023-05-11 15:43:52 136

原创 力扣书单整理|值得程序员反复阅读的好书

Java 的名字是如此响亮,越来越多的人想来学学 Java ,在学校里的那次 Java 协会聚会时,我发现,本科里学 Java 的还是处于入门阶段的最多,他们对 Java 具体是什么,能做什么,怎么用,处于相当懵懂的地步(我现在也没好多少~),这一切,在这本书里都讲的相当清楚。更重要的是,你会因此而获得对计算机工作原理较深刻的理解。我对我的朋友说,装一个 JCreator ,自己亲手配好 JDK 的环境,然后好好看这本书,特别是前七章,把里面的代码好好敲一遍,相信你的 Java 能够到一个基本入门的地步。

2023-05-10 16:24:18 265

原创 深度干货 | 后端面试中的 MySQL 高频考题

同时非叶子节点不保存具体的数据,而只保存关键字的索引,具体数据保存在叶子结点中——相对于 B 树,减少了非叶子结点(索引)的数据量,所以相同的内存空间能保存更多的索引,从而减少 io 次数。比如我们有两个进程 AB ,他们都需要资源 1 和资源 2 ,当进程 A 持有资源 1 ,进线程 B 持有资源 2 的时候,他们都需要对方手上的进程,而一般操作系统又不允许抢占,这个时候就发生了死锁。乐观锁适用于写比较少的情况下(多读场景),即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。

2023-05-09 14:40:11 103

原创 刚入职的程序员该如何度过试用期?

这些 git 使用问题,做自己的项目或者在培训班做项目的时候很难遇到,但在工作中,你常常会需要别人配合,你们是一个小团队做协同开发,不懂 git 或者 git 命令不熟练,那你的工作很难做得好。联调的时候不要把时间浪费在细枝末节上,尽量多把时间花费在主流程的调通上,比如说,你做了一个保存的功能,那最重要的就是保存流程的走通,至于什么选项多了少了之类的,都不重要。有的人可能会羞于问问题,其实大家讨厌的不是提问的人,而是讨厌伸手党和重复问一个问题的人,没有人会讨厌认真的人。

2023-05-08 14:10:26 826

原创 LeetCode 力扣官方题解 | 1089. 复写零

我们用 top 来标记栈顶位置,用 i 来标记现在需要放置的元素位置,那么我们找到原数组中对应放置在最后位置的元素位置,然后在数组最后从该位置元素往前来进行模拟放置即可。而实际上我们可以不需要开辟栈空间来模拟放置元素,我们只需要用两个指针来进行标记栈顶位置和现在需要放置的元素位置即可。注意:请不要在超过该数组长度的位置写入元素。给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。时间复杂度:O(n) ,其中 n 为数组 arr 的长度,需要遍历两遍数组。

2023-05-06 14:55:57 84

原创 LeetCode 力扣官方题解 | 1823. 找出游戏的获胜者

由于在第 k’ 名小伙伴离开圈子之后,圈子中剩下的 n−1 名小伙伴从第 k’+1名小伙伴开始计数,获胜者编号是从第 k’+1 名小伙伴开始的第 x 名小伙伴,因此当圈子中有 n 名小伙伴时,获胜者编号是 f(n,k) = (k′modn+x−1)modn + 1 = (k+x−1)modn + 1。又由于 k − k′ 是 n 的倍数等价于 (k-1) - (k’-1)是 n 的倍数,因此 k′−1 = (k−1)modn,k′ = (k−1)modn + 1。令 x = f(n−1,k)。

2023-05-05 10:39:57 62

原创 整理了一份最全的力扣刷题攻略(三)

2.如果按照对应的知识点,可选择自己较为薄弱的算法知识针对性刷题;1.如果按照本文推荐的顺序逐一刷题,适合第一次系统性刷题的朋友;所以例举数组、链表、哈希表等 3 个知识点的刷题攻略展开;分享 和算法有关的精彩的文章、题解或讨论帖;整理了一份最全的力扣刷题攻略(三)贡献 自己对这个知识点的精彩总结;提供 知识点下更合理的题目分类;提供 题目分类对应的典型题;编辑/版式:pingping。

2023-05-04 10:34:27 78

原创 整理了一份最全的力扣刷题攻略(二)

2.如果按照对应的知识点,可选择自己较为薄弱的算法知识针对性刷题;1.如果按照本文推荐的顺序逐一刷题,适合第一次系统性刷题的朋友;所以例举数组、链表、哈希表等 3 个知识点的刷题攻略展开;由于篇幅有限且也在不断完善题库,编辑/版式:pingping。

2023-04-28 11:57:00 267

原创 整理了一份最全的力扣刷题攻略

你可以这样使用本刷题攻略,2 个路径:1.如果按照本文推荐的顺序逐一刷题,适合第一次系统性刷题的朋友;2.如果按照对应的知识点,可选择自己较为薄弱的算法知识针对性刷题;由于篇幅有限且也在不断完善题库,

2023-04-27 11:06:42 2510 1

原创 LeetCode 力扣官方题解 | 436. 寻找右区间

LeetCode 力扣官方题解 | 436. 寻找右区间寻找右区间题目描述难易度:中等给你一个区间数组 intervals ,其中 intervals [i] = [starti, endi] ,且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j ,并满足 startj >= endi ,且 startj 最小化 。返回一个由每个区间 i 的 右侧区间 在 intervals 中对应下标组成的数组。如果某个区间 i 不存在对应的 右侧区间 ,则下标 i 处的值设

2023-04-27 10:50:05 212 1

原创 LeetCode 力扣官方题解 | 806. 写字符串需要的行数

我们给定了一个数组 widths ,这个数组 widths [0] 代表 ‘a’ 需要的单位,widths [1] 代表 ‘b’ 需要的单位,…我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为 100 个单位,如果我们在写某个字母的时候会使这行超过了 100 个单位,那么我们应该把这个字母写到下一行。如果 width + widths [c] > 100 ,此时需要另起新的一行,那么此时 lines 的值加 1 ,并将 width 置为 widths [c]。空间复杂度:O(1)。

2023-04-26 10:44:41 50

原创 LeetCode 力扣官方题解 | 515. 在每个树行中找最大值

每次拓展下一层的时候,不同于「广度优先搜索」的每次只从队列里拿出一个节点,我们把当前队列中的全部节点拿出来进行拓展,这样能保证每次拓展完的时候队列里存放的是下一层的所有节点,即我们是一层一层地进行拓展,然后每一层我们用 maxVal 来标记该层节点的最大值。我们用树的「先序遍历」来进行「深度优先搜索」处理,并用 curHeight 来标记遍历到的当前节点的高度。「广度优先搜索」中的队列里存放的是「当前层的所有节点」。时间复杂度:O(n) ,其中 n 为二叉树节点个数,每一个节点仅会进出队列一次。

2023-04-25 16:37:09 82

原创 LeetCode 力扣官方题解 | 961. 在长度 2N 的数组中找出重复 N 次的元素

当 n > 2 时,3n−2 > 2n,不存在满足要求的数组。因此一定存在两个相邻的 x ,它们的位置是连续的,或者只隔了 1 个位置。由于数组 nums 中有 n+1 个不同的元素,而其长度为 2n,那么数组中剩余的元素均只出现了一次。选择两个相同元素的概率为 n/2n*(n-1)/2n≈1/4 ,因此期望 44 次结束循环。这样一来,我们只需要遍历所有间隔 2 个位置及以内的下标对,判断对应的元素是否相等即可。当 n=2 时,数组的长度最多为 2n=4,因此最多只能隔 2 个位置。

2023-04-24 14:43:33 68

原创 LeetCode 力扣官方题解 | 965. 单值二叉树

当搜索到节点 x 时,我们检查 x 与 x 的每一个子节点之间的边是否满足要求。例如对于左子节点而言,如果其存在并且值与 x 相同,那么我们继续向下搜索该左子节点;一棵树的所有节点都有相同的值,当且仅当对于树上的每一条边的两个端点,它们都有相同的值(这样根据传递性,所有节点都有相同的值)。时间复杂度:O(n) ,其中 n 是二叉树的节点个数。我们遍历二叉树的每个节点至多一次。如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。空间复杂度:O(n) ,即为深度优先搜索中需要使用的栈空间。

2023-04-23 10:55:17 49

原创 LeetCode 力扣官方题解 | 1108. IP 地址无效化

给你一个有效的 IPv4 地址 address ,返回这个 IP 地址的无效化版本。按照题目要求,依次将字符串 address 中 ‘.’ 替换为 “[.]” 即可。时间复杂度:O(n) ,其中 n 为字符串 s 的长度,需要遍历一遍字符串即可。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。空间复杂度:O(1) ,除返回值外,不需要额外的存储空间。给出的 address 是一个有效的 IPv4 地址。编辑/版式:pingping。

2023-04-21 16:20:24 60

原创 LeetCode 力扣官方题解 | 剑指 Offer II 091. 粉刷房子

对于 1≤i

2023-04-20 14:33:20 293

原创 刷题心得|这些力扣刷题经验一定不能错过

其他题目答的都差不多,算法题做不出来,拿到 offer 的概率就会下降,部分同学在刷完 1000 多道题后,发现在面试的时候 80% 的算法题都是原题。即使这道题目你做出来了,击败 100% 了,也建议去看看别人的题解,学习更多他人解题的思路,帮助自己打开脑洞,做到 一题多解。还能帮助到更多同学。是 LeetCode 精心整理的算法和数据结构专项练习,每个专项对应一个重要的知识点,并通过一系列相关的题目带大家入门,相对自己零散地选题目来说,更加简单实用,还附有讲解,是入门的不二之选。找工作刷题,登陆 👉。

2023-04-19 10:42:52 742

原创 LeetCode 力扣官方题解 | 30. 串联所有单词的子串

初始化 differ 时,出现在窗口中的单词,每出现一次,相应的值增加 1 ,出现在 words 中的单词,每出现一次,相应的值减少 1。窗口移动时,若出现 differ 中值不为 0 的键的数量为 0 ,则表示这个窗口中的单词频次和 words 中单词频次相同,窗口的左端点是一个待求的起始位置。记 words 的长度为 m,words 中每个单词的长度为 n,s 的长度为 ls。空间复杂度:O(m×n),其中 m 是 words 的单词数,n 是 words 中每个单词的长度。

2023-04-18 14:13:22 151

原创 LeetCode 力扣官方题解 | 464. 我能赢吗

在剩下的数字中,如果他能选择一个 i ,使得对方在接下来的局面中无法获胜,则他会获胜。根据这个思想设计搜索函数 dfs ,其中 usedNumbers 可以用一个整数来表示,从低位到高位,第 i 位为 1 则表示数字 i 已经被使用,为 0 则表示数字 i 未被使用。在 " 100 game " 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和 达到或超过 100 的玩家,即为胜者。n) 次,每次消耗 O(n) 时间,总时间复杂度为 O(2*n×n)。

2023-04-17 14:01:35 185

原创 我是这样拿到微软Offer的

介绍了微软面试的流程,总结了一些经验

2023-04-13 11:45:00 182

原创 LeetCode 刷题应该知道这几点

整理了有效的刷LeetCode的方式和技巧

2023-04-12 11:36:06 900

原创 LeetCode 力扣官方题解 | 513. 找树左下角的值

本题为LeetCode 力扣官方题解 | 513. 找树左下角的值的题解相关知识点是树、深度优先搜索、广度优先搜索树、二叉树

2023-04-12 10:50:43 82 1

原创 编程「锁」事|详解乐观锁 CAS 的技术原理

其实因为 AtomicInteger 类也在 rt.jar 包下面的,所以 AtomicInteger 类就是通过 Bootstrap 根类加载器进行加载的, Unsafe具体实现就得看hotspot 源码,unsafe.cpp,C++的代码就不在具体在这里分析,感兴趣的同学可以去看看,从代码里可以看到CAS 的实现离不开处理器的支持,根据当前处理器的类型来决定是否为 cmpxchg 指令添加 lock 前缀。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。(3)expect,期望更新的值。

2023-04-11 18:21:38 215

原创 火遍全网的 ChatGPT,给你的求职新方向

这类活动通常会有很多名企参与,作为程序员来说,参加这类活动能够让你有机会向这些名企展示自己的能力,也有机会获得与这些名企的合作机会。但目前并未开放国内注册,为了满足大家的好奇心,力扣君也体验了一把这个工具,至此我们面向程序员征集,并筛选出了程序员最关心的几个问题,将这些问题投喂给了 ChatGPT,整理成了这篇文章。你可以在这些平台上发布自己的个人信息,也可以浏览其他人的信息,寻找合适的女朋友。总之,要找到女朋友,就需要多多参加各种活动,增加自己的交际圈,并且主动与他人交流,这样才有可能遇到合适的女朋友。

2022-12-29 17:05:11 1155

空空如也

空空如也

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

TA关注的人

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