![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 90
Albertliuc
这个作者很懒,什么都没留下…
展开
-
哈希表类结构在相关问题中的应用
比如数组有序的场景,是可以通过排序O(n)+双指针O(n)的方案,解决了一个O(n^2)复杂度的查找问题的。如例题(15)三数之和中的解法,在数组排序后,找一个普通for循环选定一个元素A,剩下两个元素B、C进行遍历搜索,当。和一定要先向右移动右指针,但是此时再移动left,left一定经过right遍历过的位置,此时,就会导致一个元素被left遍历过一次,right便利过一次,出现数据重复或错误。此时,由于A是普通循环变量,所以一般不被视为指针,B和C被控制了精确地移动方向,所以算是双指针。......原创 2022-07-26 15:47:47 · 93 阅读 · 0 评论 -
链表的设计,修改,查找(如何选择循环基点,如何确定复杂边界条件)
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:此题目通过单向链表即可解决,因此不考虑双向链表算法。链表冗余信息的选择作为一个链表,需要保存哪些冗余信息?head:肯定要有,最好还是用虚拟nodesize:肯定要有。如果没有保存size当使用while原创 2022-07-13 13:33:38 · 185 阅读 · 0 评论 -
链表的插入,删除算法设计思考(保留不同变量对算法的设计会产生哪些影响,插入和删除节点的循环条件为什么这么复杂)
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:此题目通过单向链表即可解决,因此不考虑双向链表算法。链表冗余信息的选择作为一个链表,需要保存哪些冗余信息?head:肯定要有,最好还是用虚拟nodesize:肯定要有。如果没有保存size当使用while原创 2022-07-12 15:53:26 · 277 阅读 · 0 评论 -
滑动窗口解决连续子串问题(滑动窗口与暴力破解对比看算法本质,左右指针变化看窗口控制)
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 的 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:难点分析:滑动窗口的控制处理这道题目,一般有两种方法,暴力求解和滑动窗口。无论是暴力求解还是滑动窗口求解,本质上都是一种双指针法的变体,都要不断变化双指针位置,去查找符合要求的元素范围。在双指针变化过程中,需要考虑两个问题滑动窗口正常的动作一般有两种:平移和放缩,但实际操作过程中,原创 2022-07-10 02:01:48 · 306 阅读 · 0 评论 -
二分查找(从分治思想谈二分查找原理,一次搞定边界条件)
分治理论二分法是分治思想的典范,这句话很多人听过只觉得是个概念,不当回事,但实际上这才是解决二分法问题的核心关键。什么是分治思想,分治思想就是把一个大问题A,拆成无数个小问题B,再采用相同的方法分而治之。典型的案例是动态规划问题的应用,二分法也可以理解为一个简单的动态规划问题,只不过由于二分法逐渐缩小范围,实际上是将其他不符合要求的小问题抛弃了。既然是分治,那就可以把每次循环,看成一个问题的拆分动作。每次缩小范围后,都视为在处理一个拆分后的小问题。由于解决大问题和小问题采用的是同一套方法,那么拆分后的小问题原创 2022-07-08 19:14:21 · 707 阅读 · 0 评论