算法题解
文章平均质量分 92
算法题目详细分析加解析
马尔科686
这个作者很懒,什么都没留下…
展开
-
【哈希表专题】(1. 两数之和 面试题 01.02. 判定是否互为字符重排 217. 存在重复元素 219. 存在重复元素 II 49. 字母异位词分组)
哈希表是什么:存储数据的容器作用:快速查找某个元素。O(1)当我们需要频繁的查找某一个数的时候,可以使用哈希表。如何用哈希表:题目链接: leetcode1. 两数之和解法一:暴力解法代码:该方法接收两个参数:一个整数数组和一个整数。方法的目的是在数组中找到两个数,使它们的和等于target,并返回这两个数的索引。解析:解法二:哈希表该方法接收两个参数:一个整数数组和一个整数。方法的目的是在数组中找到两个数,使它们的和等于,并返回这两个数的索引。首先,创建一个(名为)来存储数组中的元素及其对应的索引。原创 2024-04-04 20:03:34 · 613 阅读 · 0 评论 -
【链表专题】(2. 两数相加 23. 合并 K 个升序链表 25. K 个一组翻转链表)
在这段代码中,"把不需要逆序的连接上"的步骤没有使用循环的原因是因为在之前的步骤中已经完成了所有需要逆序的分组操作。具体来说,由于我们已经按照每k个节点为一组进行了逆序排列,当我们执行到最后一组的时候,这组后面的节点都是不需要再逆序的。在循环中,首先从堆中取出一个元素(即链表的一个节点),然后将prev的下一个节点设置为这个取出的元素。将不需要逆序的部分连接到已逆序的链表后面。所以,这里的设计是先通过循环处理所有需要特殊处理的节点,然后通过一次简单的赋值操作完成剩余节点的连接,从而避免了不必要的循环。原创 2024-03-31 16:19:10 · 884 阅读 · 0 评论 -
【二分查找专题】(二分查找算法简介 特点 学习侧重点 704. 二分查找 题目解析 算法原理 编写代码 朴素二分模版 34. 在排序数组中查找元素的第一个和最后一个位置 题目解析 算法原理 编写代码)
细节多,最容易写出死循环的算法题目链接:leetcode34. 在排序数组中查找元素的第一个和最后一个位置。原创 2024-03-20 14:48:08 · 293 阅读 · 0 评论 -
【滑动窗口专题】LeetCode209 LeetCode3 LeetCode1004 LeetCode1658 LeetCode904 LeetCode438 LeetCode30
优化: 先固定左边的left然后让right指向left,定义一个sum,让right向右移动,用sum存区间之和,当sum >= 7时,然后left++,right重新移到left的位置,再将right移动进行求和,我们发现此步骤很繁琐,所以我们干脆不移动right,将它放在原位置,光让left++,再求区间大小.问题转化:找出最长的子数组的长度(len),所有的元素的和正好等于sum - x(target)判断每个字符串里的每个字符出现的次数.将原始的问题转化为:找出最长的子数组,0的个数不超过k个.原创 2023-11-28 21:21:28 · 93 阅读 · 0 评论 -
【双指针专题】(LeetCode11 LeetCode15 LeetCode18 LeetCode202 LeetCode611 LeetCode:剑指Offer57.和为s的两个数字)
三层for循环的时间复杂度就是O(N^3)然后看常数级别的时间复杂度.check(i,j,k),里面的判断如果是采用最初始的判断三角形的方法.相当于最内层for循环,check这个语句执行三次,用这种判断策略的话整个算法的时间复杂度就是O(3 * N ^3).若我们先排序,然后仅需判断一次check(i,j,k)就可以了,这种策略我们需要加上排序的时间复杂度(N * logN),采用这种策略整个算法的时间复杂度就是O(N* logN + N ^3),因此优化后对暴力枚举这种方法的时间复杂度是非常大的.原创 2023-07-12 20:14:42 · 90 阅读 · 5 评论