weixin_44329069
码龄6年
关注
提问 私信
  • 博客:131,786
    131,786
    总访问量
  • 114
    原创
  • 24,325
    排名
  • 1,130
    粉丝
  • 0
    铁粉

个人简介:整理一下日常用过的教程or学习资料

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2018-12-29
博客简介:

weixin_44329069的博客

查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    735
    当月
    42
个人成就
  • 获得2,023次点赞
  • 内容获得11次评论
  • 获得2,156次收藏
  • 代码片获得4,390次分享
创作历程
  • 39篇
    2025年
  • 75篇
    2024年
成就勋章
TA的专栏
  • JavaWeb
    11篇
  • python刷题系列
    49篇
  • 面试系列
    18篇
  • Build a Large Language Model
    7篇
  • 学习系列
    18篇
  • 论文阅读
    3篇
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【剑指Offer刷题系列】数组中的逆序对

利用归并排序的分治思想,在排序的过程中统计逆序对的数量。具体来说,在合并两个已排序的子数组时,当左子数组中的元素大于右子数组中的元素时,说明左子数组中当前元素及其后面的所有元素都与右子数组中的当前元素构成逆序对。在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。对的总数,即统计数组中的「交易逆序对」总数。该方法在实际应用中广泛使用,尤其适用于需要统计逆序对或进行高效排序的场景。,我们能够高效地统计数组中的「交易逆序对」总数。,返回其中存在的「交易逆序对」总数。
原创
发布博客 2025.01.08 ·
499 阅读 ·
7 点赞 ·
2 评论 ·
15 收藏

【剑指Offer刷题系列】数据流中的中位数

本题要求设计一个数据结构,能够高效地从数据流中添加数字并随时返回中位数。由于数据流可能非常大(最多50000次操作),我们需要一种高效的方法来维护数据的中位数。中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。该方法在实际应用中广泛使用,尤其适用于需要实时统计中位数的数据流场景,如在线统计、实时监控等。的方法,我们能够高效地设计一个支持实时添加数字和查找中位数的数据结构。以下是针对上述方法的测试代码,使用。
原创
发布博客 2025.01.08 ·
1135 阅读 ·
18 点赞 ·
0 评论 ·
27 收藏

【剑指Offer刷题系列】最小的k个数

这是最直观的方法,能够保证选出的元素确实是最小的。值,以及对空间和时间的需求平衡。个最小的库存余量,并以任意顺序返回。表示对应商品库存余量。请返回库存余量最少的。使用最小堆(Min-Heap)来高效地找到。在实际应用中,选择哪种方法取决于具体的。以下是针对上述方法的测试代码,使用。在上述示例中,最小的库存余量为。返回数组中最小的一个库存余量。返回数组中最小的两个库存余量。通过对数组进行排序,将最小的。两种方法,我们能够高效地从。形式记录商品库存表,其中。个商品余量,返回顺序不限。的时间复杂度内完成任务。
原创
发布博客 2025.01.08 ·
926 阅读 ·
26 点赞 ·
0 评论 ·
19 收藏

【剑指Offer刷题系列】把数组排成最小的数

通过自定义排序规则,对数组中的元素进行排序,使得拼接后的数值最小。具体来说,对于两个数字x和y,比较拼接后的字符串xy和yx的大小,决定x应该排在y前面还是后面。"""方法一:自定义排序(贪心算法)将所有元素转换为字符串,定义自定义排序规则,使得拼接后的字符串最小。
原创
发布博客 2025.01.08 ·
552 阅读 ·
22 点赞 ·
0 评论 ·
29 收藏

【剑指Offer刷题系列】调整数组顺序使奇数位于偶数前面

通过交换奇数和偶数的位置,将所有奇数移动到数组的前半部分,偶数移动到后半部分。该方法节省了空间,但可能会破坏奇数和偶数的相对顺序。中所有奇数编号的训练项目移动到偶数编号训练项目之前,同时保持奇数和偶数各自的相对顺序。遍历原数组,将奇数编号和偶数编号分别存储到两个新的数组中,最后将奇数数组和偶数数组合并即可。该方法简单直观,能够有效地保持奇数和偶数的相对顺序。遍历数组,将奇数元素插入到结果数组的前面,同时保持其相对顺序。该方法需要额外的空间,但能够保持奇数和偶数的相对顺序。之前,且相对顺序保持不变。
原创
发布博客 2025.01.08 ·
881 阅读 ·
10 点赞 ·
0 评论 ·
15 收藏

【剑指Offer刷题系列】滑动窗口的最大值

队列中存储的是元素的索引,并且保持队列中的元素对应的值从大到小排列。科技馆内有一台虚拟观景望远镜,它可以用来观测特定纬度地区的地形情况。,我们能够解决望远镜视野范围内的最大海拔值查找问题。是最常用且高效的解决方案,尤其适用于需要在滑动窗口中快速找到最大值的场景。在上述示例中,滑动窗口大小为 3,依次滑动后各窗口内的最大值分别为。对于每一个可能的窗口,直接遍历窗口内的所有元素,找到最大值。的子数组的最大值,并将这些最大值按顺序返回。以下是针对上述方法的测试代码,使用。内,可以观测到的最高海拔值。
原创
发布博客 2025.01.08 ·
997 阅读 ·
23 点赞 ·
0 评论 ·
25 收藏

【剑指Offer刷题系列】和为s的连续正数序列

本次问题通过分析和应用滑动窗口法数学公式法和双指针优化,成功地找到了所有满足条件的连续正整数序列。利用滑动窗口:通过动态调整窗口大小,确保序列的总和与目标一致。应用数学公式:通过数学推导,直接计算可能的起始数字和序列长度,减少了不必要的遍历。优化双指针策略:在滑动窗口的基础上,通过更智能的指针移动,进一步提升了搜索效率。掌握多种解题思路和方法,不仅能够提升解决问题的效率和准确性,还能增强算法设计和问题解决的能力。通过系统的学习和实践,可以在实际编程和算法挑战中灵活应用这些技巧,提高代码的性能和效率。
原创
发布博客 2025.01.08 ·
667 阅读 ·
22 点赞 ·
0 评论 ·
20 收藏

【剑指Offer刷题系列】判断连续的数组

以下是优化后的解法,减少了不必要的枚举,通过合理缩小起始朝代的范围,并确保替换后无重复朝代。通过优化枚举过程,首先检查已知朝代是否存在重复,进而缩小起始朝代的范围,确保替换后的朝代编号唯一且连续,显著减少了计算量,实现了更高效的判断。采用暴力枚举所有可能的替换方式,简单直观,但在存在多个未知朝代时,时间复杂度较高。可以代表任何朝代,因此需要考虑所有可能的替换方式,同时确保替换后序列中的朝代编号唯一且连续。在优化后的解法中,除了检查已知朝代是否在连续序列中,还需要确保有足够的不同朝代可供替换。
原创
发布博客 2025.01.08 ·
678 阅读 ·
24 点赞 ·
0 评论 ·
29 收藏

【剑指Offer刷题系列】数组中出现次数超过一半的数字

摩尔投票算法利用了多数元素的定义,通过抵消不同元素的影响,最终确定多数元素。这种方法不仅在本题中表现优异,还可以扩展应用于其他类似的多数元素识别问题。由于题目保证了多数元素的存在,我们可以采用多种方法来高效地解决该问题。使用哈希表(字典)来记录每个元素出现的次数,遍历数组并更新计数。当某个元素的计数超过 ⌊n/2⌋ 时,直接返回该元素。摩尔投票算法的核心思想是通过抵消不同的元素来确定多数元素。出现了 2 次,超过了 ⌊3/2⌋ = 1 次,因此。出现了 4 次,超过了 ⌊7/2⌋ = 3 次,因此。
原创
发布博客 2025.01.08 ·
837 阅读 ·
30 点赞 ·
0 评论 ·
11 收藏

【剑指Offer刷题系列】找到第 k 位数字

这种按位划分与计算的方法不仅适用于本题,还可广泛应用于其他类似的数字位分析问题。掌握此类数学方法的实现技巧,对于提升算法设计和问题解决能力具有重要的指导意义,能够在实际编程和算法挑战中灵活应用,提高代码的性能和效率。所在的位数范围,并精确定位到具体的数字及其位数,从而确保了算法的时间和空间效率。,我们能够高效地在一个由连续整数拼接而成的字符序列中找到第。该方法利用了数字在各位上的分布规律,通过逐步确定。本题要求在一个由连续整数拼接而成的字符序列中,找到第。,第 12 位数字是。,第 15 位数字是。
原创
发布博客 2025.01.07 ·
696 阅读 ·
14 点赞 ·
0 评论 ·
11 收藏

【剑指Offer刷题系列】数字 1 的个数

这种方法不仅适用于本题,还可广泛应用于其他类似的数字位分析问题。掌握此类按位计数的技巧,对于提升算法设计和问题解决能力具有重要的指导意义,能够在实际编程和算法挑战中灵活应用,提高代码的性能和效率。然而,由于动态规划的复杂度与数学方法相当,且数学方法更直观,因此本文将主要采用。该方法利用了数字在各个位上的独立性,逐位分析。虽然数学方法已经可以高效解决问题,但另一种常见的方法是。在该位上出现的次数。在本题中,可以通过记录每个位上的。的数学方法,我们能够高效地计算从。的出现频率,确保了时间复杂度为。
原创
发布博客 2025.01.07 ·
721 阅读 ·
12 点赞 ·
0 评论 ·
5 收藏

【剑指Offer刷题系列】整数拆分 II

的要求,而且具有良好的可扩展性和高效性,适用于处理大规模数据的优化问题。掌握此类贪心算法的实现技巧,对于解决各种需要最大化或最小化的优化问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。的竹子砍为若干段,每段长度均为正整数,并返回这些段长度的。将竹子分为 3 段,每段长度为 3、3 和 4,乘积为。将竹子分为 4 段,每段长度为 3,乘积为。将竹子分为 2 段,每段长度为 1,乘积为。的竹子分割为若干段,并计算出这些段长度的。的竹子砍为若干段,每段长度均为。
原创
发布博客 2025.01.06 ·
837 阅读 ·
22 点赞 ·
0 评论 ·
13 收藏

【剑指Offer刷题系列】整数拆分

现需要将一根长度为正整数 的竹子砍为若干段,每段长度均为正整数。请返回每段竹子长度的最大乘积是多少。注意:提示:原题链接:输入:输出:解释:将竹子分为 3 段,每段长度为 4,乘积为 4 × 4 × 4 = 64。或者分为 4 段,每段长度为 3,乘积为 3 × 3 × 3 × 3 = 81。最大乘积为 81。输入:输出:解释:将竹子分为 2 段,每段长度为 1,乘积为 1 × 1 = 1。输入:输出:解释:将竹子分为 3 段,每段长度为 3,3,4,乘积为 3 × 3 × 4 = 36
原创
发布博客 2025.01.06 ·
961 阅读 ·
28 点赞 ·
0 评论 ·
17 收藏

【剑指Offer刷题系列】数组中数字出现的次数 II

的要求,而且具有良好的可扩展性和高效性,适用于处理大规模数据的查找问题。掌握此类位操作技巧,对于解决类似的数组查找和元素计数问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。的数组中高效地找到两种唯一出现一次的元素(即教练的编号)。出现一次的元素(即教练的编号),而其他所有元素(即学员的编号)都出现。需要遍历数组的每个元素,对于每一位执行计数操作,共进行。的袜子各只有一只,其他颜色的袜子均有三只。的袜子各只有一只,其他颜色的袜子均有三只。取模,最终重构出唯一元素的值。
原创
发布博客 2025.01.06 ·
857 阅读 ·
23 点赞 ·
0 评论 ·
10 收藏

【剑指Offer刷题系列】数组中数字出现的次数

的数组中高效地找到两种唯一颜色的袜子编号。该方法利用了异或运算的性质,将问题分解为两个独立的部分,通过二分位的方法将两种唯一颜色编号区分开来,确保了算法的时间和空间效率。掌握此类位操作技巧,对于解决类似的数组查找和分组问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。礼盒中除了一双撞色搭配的袜子,每种颜色的袜子均有两只。的数组中找到恰好两种颜色的袜子各只有一只,其余颜色的袜子各有两只。的袜子各只有一只,其他颜色的袜子均有两只。的袜子各只有一只,其他颜色的袜子均有两只。
原创
发布博客 2025.01.06 ·
707 阅读 ·
17 点赞 ·
0 评论 ·
18 收藏

【剑指Offer刷题系列】数值的整数次方

掌握此类快速幂的实现技巧,对于解决各种需要高效幂运算的编程问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。快速幂算法通过每次将问题规模减半,实现了对数级别的时间复杂度。该方法利用了幂运算的二分性质,将计算过程中的时间复杂度降低至。,使用常数级别的额外空间。是一个浮点数,因此需要考虑多种情况。是正数、负数还是零,快速幂算法都能准确地计算出结果。,同时保持了空间复杂度的最小化。以下是针对上述方法的测试代码,使用。,我们能够高效地计算一个浮点数。,由于递归调用栈的深度为。
原创
发布博客 2025.01.06 ·
625 阅读 ·
24 点赞 ·
0 评论 ·
16 收藏

【剑指Offer刷题系列】二进制中1的个数

掌握此类位操作技巧,对于解决类似的二进制计算问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。由于输入可能包含大量位(32 位),直接逐位检查可能导致效率较低。这种方法在处理大规模数据时表现出色,确保了时间和空间的高效性。该方法利用了二进制数的特性,通过逐步清除最低位的。(以二进制串的形式),返回其二进制表达式中数字位数为。以下是针对上述方法的测试代码,使用。的方法,我们能够高效地计算一个。的方法能够更高效地解决问题。编写一个函数,输入是一个。,并计数,直至所有的。
原创
发布博客 2025.01.06 ·
509 阅读 ·
20 点赞 ·
0 评论 ·
10 收藏

【剑指Offer刷题系列】旋转数组的最小数字

的升序数组中找到最小的元素。该方法利用了数组的有序性,通过比较中间元素与右边界元素,逐步缩小搜索范围,确保了算法的高效性和正确性。掌握此类二分查找的应用技巧,对于解决类似的查找问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。的升序数组中,找到最小的元素。由于数组可能包含重复元素,常规的二分查找方法可能会因无法确定哪边是有序的而需要进行调整。:在最坏情况下,时间复杂度为 O(n),例如数组中所有元素都相同。只使用了常数级别的额外空间。没有被旋转,最小的元素是。
原创
发布博客 2025.01.06 ·
601 阅读 ·
19 点赞 ·
0 评论 ·
12 收藏

【剑指Offer刷题系列】0~n-1中缺失的数字

掌握此类二分查找的应用技巧,对于解决类似的查找问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。的数组中找到缺失的学号。该方法利用了数组的有序性,通过对比索引与元素值,迅速缩小搜索范围,确保了算法的高效性和正确性。的数组中,找到缺失的学号。由于数组是有序的,可以利用。通过二分查找,将搜索范围每次减半。假定仅有一位同学缺席,请返回他的学号。只使用了常数级别的额外空间。以下是针对上述方法的测试代码,使用。的方法,我们能够高效地在一个。:O(log n),其中。
原创
发布博客 2025.01.06 ·
592 阅读 ·
8 点赞 ·
0 评论 ·
11 收藏

【剑指Offer刷题系列】在排序数组中查找

掌握此类二分查找的变形技巧,对于解决类似的查找和计数问题具有重要的指导意义,能够在实际编程和算法设计中灵活应用,提高代码的性能和效率。的首次和末次出现位置,从而计算出其出现的总次数。这种方法在处理大规模数据时表现出色,确保了时间和空间的高效性。进行两次二分查找,每次的时间复杂度为 O(log n)。该方法利用了数组的有序性,通过两次二分查找分别定位。只使用了常数级别的额外空间。(即非递减)排序的数组中统计目标值。(即非递减)排序的数组中统计目标值。的变形方法,我们能够高效地在一个。的方法来高效地解决问题。
原创
发布博客 2025.01.06 ·
658 阅读 ·
25 点赞 ·
0 评论 ·
12 收藏
加载更多