自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 性能优化的过程方法思考3

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:14:57 375

原创 性能优化的过程方法思考12

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:13:57 345

原创 性能优化的过程方法思考8

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:13:52 401

原创 性能优化的过程方法思考7

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:13:48 545

原创 性能优化的过程方法思考1

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:13:42 333

原创 性能优化的过程方法思考15

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:13:36 400

原创 性能优化的过程方法思考14

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:13:31 581

原创 性能优化的过程方法思考13

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:13:27 471

原创 性能优化的过程方法思考11

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:12:32 546

原创 性能优化的过程方法思考10

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:12:13 397

原创 性能优化的过程方法思考9

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:11:59 420

原创 性能优化的过程方法思考6

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:11:24 335

原创 性能优化的过程方法思考5

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:11:20 509

原创 性能优化的过程方法思考4

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:11:17 481

原创 性能优化的过程方法思考2

即使熟悉了开发中的各项技术和优化技巧,但在真正的性能优化场景下,自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章,仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲,这样在性能优化的时候,能够为我指明方向,并以完整的思维方式进行思考。

2024-10-04 18:07:04 702

原创 京东高频编程考题:除自身以外数组的乘积 (中等)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。要解决这个问题并且避免使用除法,我们可以利用前缀乘积和后缀乘积来计算每个位置的结果。这种方法能够在 O(n) 时间复杂度内完成计算,且空间复杂度为 O(1),不考虑输出数组的额外空间。的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组。之中任意元素的全部前缀元素和后缀的乘积都在。之外其余各元素的乘积。时间复杂度内完成此题。

2024-10-03 20:02:24 128

原创 京东高频编程考题:缺失的第一个正数 (困难)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。:首先,遍历数组,将所有小于等于0或大于数组长度。,因为这些元素不影响我们寻找缺失的最小正整数。,请你找出其中没有出现的最小的正整数。并且只使用常数级别额外空间的解决方案。范围 [1,2] 中的数字都在数组中。1 在数组中,但 2 没有。给你一个未排序的整数数组。最小的正数 1 没有出现。请你实现时间复杂度为。

2024-10-03 20:01:50 293

原创 京东高频编程考题:矩阵置零 (中等)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。:根据步骤 1 中记录的标志,处理第一行和第一列。如果第一行或第一列需要被置为。:遍历矩阵中除了第一行和第一列之外的所有元素。这两部分特殊处理,因为它们将用作标记其他行和列的状态。:首先检查矩阵的第一行和第一列是否包含。,则将其所在行和列的所有元素都设为。,则将其所在的行和列的首位置为。的行和列中的所有元素设置为。:遍历矩阵,将那些被标记为。的矩阵,如果一个元素为。

2024-10-03 20:01:18 222

原创 京东高频编程考题:螺旋矩阵(中等)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。,它们分别代表当前矩阵的上下左右边界。初始值分别为矩阵的四个边界。:每完成一个方向的遍历后,更新相应的边界值,缩小螺旋矩阵的范围。,返回矩阵中的所有元素。

2024-10-03 20:00:46 166

原创 京东高频编程考题:旋转图像(中等)

原矩阵中的 matrix[col][n−row−1] 就被覆盖了!当我们知道了如何原地旋转矩阵之后,还有一个重要的问题在于:我们应该枚举哪些位置 (row,col) 进行上述的原地交换操作呢?题目中要求我们尝试在不使用额外内存空间的情况下进行矩阵的旋转,也就是说,我们需要「原地旋转」这个矩阵。那么 matrix[col][n−row−1] 经过旋转操作之后会到哪个位置呢?我们再重复一次之前的操作,matrix[n−row−1][n−col−1] 经过旋转操作之后会到哪个位置呢?使用另一个矩阵来旋转图像。

2024-10-03 20:00:11 340

原创 京东高频编程考题:搜索二维矩阵 II(中等)

为了高效地搜索一个具有特定性质的矩阵中的目标值,我们可以利用矩阵的排序特性来设计一个时间复杂度为 O(m+n)O(m + n)O(m+n) 的算法:从矩阵的右上角或左下角开始搜索,并根据当前元素与目标值的比较结果决定搜索的方向。:由于每列的元素是升序的,目标值在当前列的上方,因此我们可以向左移动;:由于每行的元素是升序的,目标值在当前行的下方,因此我们可以向下移动;超出矩阵的边界时,说明目标值不在矩阵中,返回。为 0(矩阵的行数 - 1),为 0(矩阵的列数 - 1)。:从矩阵的右上角开始。

2024-10-03 19:59:41 322

原创 京东高频编程考题:相交链表(简单)

请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。,函数返回结果后,链表必须。

2024-10-03 19:59:05 656

原创 京东高频编程考题:反转链表(简单)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。反转单链表是一道经典的链表操作题目。可以使用两种主要的方法来实现:迭代和递归。链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?,请你反转链表,并返回反转后的链表。1. 迭代方法复杂度。

2024-10-03 19:58:32 295

原创 京东高频编程考题:回文链表(简单)

使用快慢指针方法,快指针每次移动两个节点,慢指针每次移动一个节点。当快指针到达链表末尾时,慢指针正好处于链表的中间节点。: 从中间节点开始,反转链表的后半部分。这一步可以用来比较链表的前半部分和反转后的后半部分。: 为了保持链表的原始结构,可以在比较完成后再次反转链表的后半部分,恢复链表的结构。: 比较链表的前半部分和反转后的后半部分。如果它们相同,那么链表是回文的。,请你判断该链表是否为回文链表。给你一个单链表的头节点。空间复杂度解决此题?

2024-10-03 19:57:58 212

原创 京东高频编程考题:环形链表(简单)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。判断链表中是否有环,可以使用一种高效的算法,即。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。仅仅是为了标识链表的实际情况。,判断链表中是否有环。给你一个链表的头节点。

2024-10-03 19:56:36 268

原创 京东高频编程考题:环形链表 II(中等)

快指针每次移动两个节点,慢指针每次移动一个节点。如果链表中存在环,那么快慢指针会在环中相遇。:当快慢指针相遇时,将慢指针移回链表的头部,同时保持快指针在相遇点,二者都以相同的速度(每次移动一个节点)继续移动。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。),并在此基础上进一步寻找环的起始节点。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。要找出链表中环的起始节点,可以使用。,则在该链表中没有环。

2024-10-03 19:56:02 137

原创 京东高频编程考题:合并两个有序链表(简单)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。指向合并后的链表的头节点。新链表是通过拼接给定的两个链表的所有节点组成的。法来逐个比较两个链表的节点,然后将较小的节点添加到结果链表中。:当一个链表遍历完后,将另一个链表的剩余部分直接连接到。要将两个升序链表合并为一个新的升序链表,我们可以使用。的当前节点值,将较小的那个节点添加到。将两个升序链表合并为一个新的。,这是合并后链表的头节点。,并移动相应链表的指针;

2024-10-03 19:55:28 160

原创 京东高频编程考题:两数相加(中等)

要将两个逆序存储的链表表示的非负整数相加,并返回一个新的链表表示它们的和,可以逐位相加,处理进位问题。每一位的加法要考虑两个链表当前节点的值以及前一位的进位。:遍历两个链表,直到所有节点都处理完;你可以假设除了数字 0 之外,这两个数都不会以 0 开头。不为 0,则需要在结果链表末尾添加一个新节点表示进位。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。将计算出的节点值添加到结果链表中。计算当前位的和以及新的进位 (,即结果链表的头节点。

2024-10-03 19:54:56 361

原创 京东高频编程考题:删除链表的倒数第 N 个结点(中等)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。要删除链表中的倒数第 n 个节点,进阶要求使用一趟扫描来实现。可以使用双指针法(快慢指针)来完成这个任务。:如果删除的是头节点,需要特别处理,直接返回。指针正好停在要删除的节点的前一个节点上。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。你能尝试使用一趟扫描实现吗?指针,跳过需要删除的节点。,都指向链表的头节点。

2024-10-03 19:54:24 101

原创 京东高频编程考题:两两交换链表中的节点(中等)

要实现两两交换链表中的相邻节点,可以使用迭代的方法,借助指针操作来完成节点的交换。这里我们不修改节点的值,只通过调整节点之间的连接顺序来达到目的。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。:为了方便处理链表头节点的特殊情况,我们可以创建一个虚拟头节点。来指向要交换的节点及其前驱节点;

2024-10-03 19:53:27 105

原创 京东高频编程考题:两数之和

我们只需遍历数组一次,对于数组中的每个元素,哈希表的查找和插入操作的时间复杂度都是 O(1),因此总的时间复杂度为 O(n)。在最坏的情况下(没有两个元素的和为目标值),我们需要在哈希表中存储数组中所有的元素及其下标,因此空间复杂度为 O(n)。我们可以通过一次遍历数组的方式解决该问题。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。

2024-10-02 15:10:16 249

原创 京东高频编程考题:字母异位词分组 (中等)

要将字母异位词组合在一起,我们可以利用哈希表(HashMap)的特性。:O(n * k)。需要使用额外的空间来存储排序后的字符串,以及存储结果的哈希表。哈希表最多需要 O(n * k) 的空间,其中。具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。是由重新排列源单词的所有字母得到的一个新单词。是字符串数组的长度,是字符串的平均长度。是字符串数组的长度,是字符串的平均长度。

2024-10-02 15:09:43 258

原创 京东高频编程考题:最长连续序列 (中等)

要在未排序的整数数组中找出最长的连续序列,并且时间复杂度要求为 O(n),可以采用哈希集(HashSet)来进行优化。具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。需要一个哈希集来存储数组中的所有元素,最坏情况下需要 O(n) 的额外空间。每个数字最多只会被访问一次,因此时间复杂度为 O(n),其中。在哈希集中插入和查找的操作时间复杂度都是 O(1)。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

2024-10-02 15:09:04 211

原创 京东高频编程考题:移动零 (简单)

数组中的每个元素最多被遍历两次(一次在第一次遍历时移动非零元素,另一次在填充零时),因此时间复杂度为 O(n)。具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。到数组末尾,同时保持非零元素的相对顺序,我们可以使用双指针技术来实现。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。只使用了常数级别的额外空间,即指针。为了在不复制数组的情况下原地移动所有。,因此空间复杂度为 O(1)。

2024-10-02 15:08:27 165

原创 京东高频编程考题:盛最多水的容器 (中等)

图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。这个问题可以通过使用双指针的方式来解决。在双指针法中,每一步只移动一个指针,一共需要遍历整个数组一次,因此时间复杂度为 O(n)。只使用了固定的额外空间来存储指针和最大面积,因此空间复杂度为 O(1)。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。

2024-10-02 15:07:48 396

原创 京东高频编程考题: 三数之和 (中等)

不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。要在数组中找出所有和为 0 且不重复的三元组,可以采用排序+双指针的方法。唯一可能的三元组和为 0。

2024-10-02 15:07:14 249

原创 京东高频编程考题:接雨水 (困难)

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。只使用了固定的额外空间来存储指针和变量,因此空间复杂度为 O(1)。为了计算在柱子之间能够接住多少雨水,可以使用双指针的方法。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。指针相遇时,遍历结束,所有的雨水量已经计算完毕。位置的柱子可能会接住雨水,接住的水量取决于。,以便在接下来的计算中使用。用于记录接住的总雨水量。,则能接住雨水,并将。位置能接住的雨水量。

2024-10-02 15:06:29 392

原创 京东高频编程考题:无重复字符的最长子串 (中等)

为了解决这个问题,可以使用滑动窗口的技术。滑动窗口可以动态地维护一个子串,并且当发现子串中有重复字符时,可以调整窗口的起始位置,从而找到不含重复字符的最长子串。使用了一个哈希集来存储当前窗口内的字符,最坏情况下需要存储所有字符,因此空间复杂度与字符集大小。:每次更新窗口后,记录当前窗口的长度,并与已知的最大长度进行比较,保留较大的值。指针右移,缩小窗口,直到窗口内没有重复字符为止。因此,总的时间复杂度为 O(n),其中。中时,说明出现了重复字符,这时需要将。,请你找出其中不含有重复字符的。

2024-10-02 15:05:52 250

原创 京东高频编程考题:找到字符串中所有字母异位词 (中等)

起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。滑动窗口每次移动都需要比较两个频率表,这一步是 O(1) 的操作,因此整个算法的时间复杂度为 O(n)。,但它们的大小是固定的(26个字母),所以空间复杂度为 O(1)。

2024-10-02 15:05:17 295

原创 京东高频编程考题:和为 K 的子数组 (中等)

具体可参考:https://zyfcodes.blog.csdn.net/article/details/141401712。我们只遍历一次数组,每次操作的时间复杂度是 O(1),因此总的时间复杂度是 O(n)。前缀和的基本思想是通过累积数组元素的和,可以快速计算出任意子数组的和。要解决这个问题,我们可以使用前缀和(Prefix Sum)以及哈希表来优化查找和为。个不同的前缀和,因此空间复杂度是 O(n)。在最坏的情况下,哈希表。子数组是数组中元素的连续非空序列。

2024-10-02 15:04:40 399

空空如也

空空如也

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

TA关注的人

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