- 博客(12)
- 收藏
- 关注
原创 136.只出现一次的数字 ------ LeetCode Hot100 ------ JavaScript版
本文提出了一种利用异或运算查找数组中唯一出现一次数字的高效算法。算法基于异或运算的三个关键性质:自反性(a^a=0)、交换律和结合律。通过将所有数字进行异或运算,出现两次的数字会相互抵消为0,最终结果即为仅出现一次的数字。该方法时间复杂度为O(n),空间复杂度O(1)。代码实现简单,只需一次遍历和异或运算即可得到结果。本文通过[4,1,2,1,2]等实例逐步展示了运算过程,验证了算法的正确性。该方法适用于查找出现奇数次数的数字(其他数字出现偶数次),但不适用于更复杂的出现频率情况。
2025-11-07 00:18:46
419
原创 15.三数之和 ------ LeetCode Hot100 ------ JavaScript版
本文提出了一种解决三数之和问题的高效算法。通过将问题转化为两数之和,采用排序预处理和双指针技术,在排序后的数组中寻找三个数使它们的和为零。算法核心是固定一个数后,使用双指针在剩余部分搜索另外两个数,并通过跳过重复元素来避免重复解。时间复杂度为O(n²),排序步骤占O(nlogn),空间复杂度取决于排序算法实现。文中详细解析了算法的实现步骤和优化策略,并通过具体测试案例展示了算法的执行过程。
2025-11-07 00:13:56
332
原创 121.买卖股票的最佳时机 ------ LeetCode Hot100 ------ JavaScript版
该算法通过单次遍历实现股票买卖最大利润计算。核心思想是:维护历史最低价minPrice,并在每日价格p处计算卖出利润(p-minPrice),动态更新最大利润ans。时间复杂度O(n),空间O(1)。 测试案例解析: [7,1,5,3,6,4]: 第4天以1买入6卖出,获利5。 [7,6,4,3,1]: 价格持续下跌,无利润。 [3,2,6,5,0,3]: 第2天以2买入6卖出,获利4。 算法有效性: 贪心策略:始终在历史最低点模拟买入 全局最优:遍历中比较所有可能的买卖组合 高效性:单次遍历即可确定最优解
2025-11-06 16:32:51
512
原创 56.合并区间 ------ LeetCode Hot100 ------ JavaScript版
如果当前区间与下一个区间重叠(当前结束 ≥ 下一个开始),合并它们。否则,将下一个区间作为新的当前区间加入结果集。:确保区间按起始位置有序,这是合并的前提。:将第一个区间作为当前区间加入结果集。:按照每个区间的起始位置升序排序。:取两个区间结束位置的较大值。:如果区间数量≤1,直接返回。(边界相接的区间也被合并)
2025-11-05 17:38:54
553
原创 11.盛最多水的容器 ------ LeetCode Hot100 ------ JavaScript版
本文介绍了一种使用双指针算法求解容器最大盛水量的方法。算法初始化两个指针分别位于数组两端,通过比较指针所指的高度值来移动较矮的指针,从而不断更新最大面积值。关键点在于:1)面积计算公式为(right-left)*min(height[left],height[right]);2)移动策略总是移动较矮的指针,因为盛水量由较矮边决定。该方法时间复杂度为O(n),空间复杂度为O(1),通过示例验证了算法的正确性。
2025-11-05 17:33:47
916
原创 53.最大子数组和 ------ LeetCode Hot100 ------ JavaScript版
该代码实现了求数组最大子序和的经典算法。通过动态规划思想,用current变量记录当前连续子数组和的最大值,max变量保存全局最大值。遍历数组时,比较当前元素与前一个子数组和的大小关系,动态更新current和max。最终返回max即为最大子序和。时间复杂度O(n),空间复杂度O(1)。
2025-10-30 13:51:57
234
原创 35.搜索插入位置 ------ LeetCode Hot100 ------ JavaScript版
摘要 该代码实现了一个在有序数组中查找目标值位置或插入位置的函数。采用二分查找算法,通过维护左右指针不断缩小搜索范围:当找到目标值时返回其索引;若未找到,则根据最后一次比较结果返回合适的插入位置。这种方法确保时间复杂度为O(log n),相比线性扫描更高效。核心逻辑是通过比较中间元素与目标值的大小关系来调整搜索边界,最终未找到时left指针即为正确的插入位置。
2025-10-30 13:49:56
208
原创 283. 移动零 ------ LeetCode Hot100 ------ JavaScript版
该代码实现了一个将数组中零元素移至末尾的函数。采用双指针法,left指针始终指向第一个零元素,right指针寻找非零元素进行交换。当right遇到零时跳过,遇到非零时与left交换并双指针同时移动。时间复杂度O(n),空间复杂度O(1),原地修改数组。这种算法高效地将所有零元素移至数组末尾,保持其他元素相对顺序不变。
2025-10-30 13:36:41
130
原创 黑马程序员------JSWebAPIs代码------Day1
本文展示了四个JavaScript实战案例:1)年会抽奖系统,随机抽取获奖者并显示结果;2)图片随机切换功能,实现刷新时随机显示不同图片;3)自动轮播图效果,定时切换图片及对应信息;4)用户注册倒计时功能,60秒倒计时结束后激活按钮。这些案例演示了JavaScript如何与HTML/CSS协同工作,实现动态交互效果。通过Math.random()随机函数、setInterval定时器等核心技术的应用,展示了前端开发中常见的功能实现方法。作者表示通过这些案例加深了对JavaScript的理解,并认为这种实践性
2025-10-29 17:13:34
308
原创 1.数组和字符串(2) ------ LeetCode ------ 探索知识地图
摘要:本文介绍了双指针算法的概念及应用场景。双指针指同时操作两个元素的思想,分为两端向中间迭代(如反转数组/字符串)和同向快慢指针(如移除元素)两种模式。经典案例包括:1)使用左右指针反转数组;2)利用快慢指针移除指定元素;3)滑动窗口解决最小子数组问题。文章通过多个LeetCode例题(如反转字符串、两数之和II、最大连续1个数等)详细讲解了双指针的实现方法,包括代码示例和解题思路分析。掌握这些基础双指针技巧能有效提升数组类问题的解决能力。
2025-10-29 17:02:05
2084
原创 1.数组和字符串(1) ------ LeetCode ------ 探索知识地图
本文介绍了数组的基本概念及其操作方式。数组作为列表的实现方式之一,具有索引标识和连续存储的特性。文章详细讲解了数组的查找、插入、删除等基本操作及其时间复杂度,并与列表、集合进行了对比区分。同时提供了两个典型算法题解:通过双指针法寻找数组中心索引(时间复杂度优化至O(n)),以及使用二分查找确定目标值插入位置(满足O(logn)要求)。这些内容帮助读者理解数组的核心特性和常用操作技巧。
2025-10-28 19:36:21
2000
原创 1.两数之和 ------ LeetCode Hot100 ------ JavaScript版
本文介绍了两种解决"两数之和"问题的算法。第一种是暴力遍历法,通过双重循环遍历数组,时间复杂度O(n²),空间复杂度O(1)。第二种是优化解法,使用哈希表存储已遍历元素,只需单次循环即可找到匹配项,时间复杂度降低到O(n),空间复杂度O(n)。通过测试用例[3,2,4]和target=6的逐步解析,展示了哈希表解法的高效性,在第三次循环时即找到匹配项并返回正确下标。优化解法显著提升了算法性能,适合处理大规模数据。
2025-10-28 12:54:50
368
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅