![](https://img-blog.csdnimg.cn/direct/17041a15920b4e51bf406b467f78afe0.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法系统学习
文章平均质量分 71
通过各种类型的oj题,理解各种算法的本质。
W2155
这个作者很懒,什么都没留下…
展开
-
算法系统学习(持续更新)
首先说说为什么要写这个博客呢,我也是想在学习算法中能与大家一起分享,一起进步,同时把学到的东西能写出来,写清楚,也是对知识一种巩固。原创 2023-12-28 10:42:33 · 699 阅读 · 0 评论 -
二分查找刷题(二)
可以将区间分于5和大于等于5的两个区间,可以使用二分查找搜索左区间的模板。可以将区间分为,小于等于山顶和大于山顶的两段区间,可以使用查找右区间的模板。可以将区间分为,小于等于x和大于x的两段区间,可以使用查找左区间的模板。根据题意小数部分将被舍去。原创 2024-03-11 22:11:03 · 256 阅读 · 0 评论 -
二分查找刷题(一)&模板讲解
二分查找一共有三种模板1.朴素二分查找2.查找左区间3.查找右区间算法中有很多细节,建议先通过例子,理解细节,然后在区记忆模板。原创 2024-03-11 21:28:37 · 1088 阅读 · 0 评论 -
滑动窗口刷题(四)困难
那么就去s中寻找"barfoothe","barthefoo","foobarthe","foothebar","thef7oobar","thebarfoo".例:如果 s = "barfoothefoobarman" word = ["foo","bar"]那么就去s中寻找"foobar"或者"barfoo",返回找到字串的起始位置。出窗口:将长度为word[0].size()的字符从hash2中删除。进窗口:将长度为word[0].size()的字符存入hash2。定义hash2存储s中的字符串。原创 2024-03-01 19:27:04 · 248 阅读 · 0 评论 -
滑动窗口刷题(三)
进窗口:存入哈希表1,如果该元素在哈希1中的大小 小于在哈希2中的大小,说明是有效字符,cnt++。出窗口:从哈希中删除,如果该元素在哈希1中的大小 小于在哈希2中的大小,说明是有效字符,cnt--。更新结果:如果有效字符的个数正好是p.size()个就更新结果。判断:如果窗口的长度大于p.size(),出窗口。创建两个哈希表,将p字符串存入哈希表2。定义cnt存放有效字符个数。比较易懂,不做解析。原创 2024-02-25 10:33:46 · 292 阅读 · 0 评论 -
滑动窗口刷题(二)
inti<n;i++)j<n;j++)cnt++;t--;{ break;cnt++;inti<n;i++)j<n;j++)cnt++;t--;{ break;cnt++;原创 2024-02-24 21:22:07 · 302 阅读 · 0 评论 -
滑动窗口刷题(一)&滑动窗口讲解
如果这道题的暴力解法可以被同向的双指针(两个指针同时向后走)所优化,第一时间就要想到滑动窗口。4.判断为真 ,将left指向的元素从哈希表中删除,直到重复的元素出现次数为一。2.right向后遍历,把right指向的元素加到sum(进窗口)4.更新结果(位置不固定,可能在出窗口之前更新,也可能之后)3.如果窗口的和sum>=targert出窗口(判断)4.把left指向的元素从sum中减出去(出窗口)2.将right的指向的元素加入哈希表中(进窗口)1.用left,right两个指针维护一个窗口。原创 2024-01-25 11:38:22 · 394 阅读 · 0 评论 -
双指针刷题(四)
如果price[left]+prince[righrt] > target,说明price[right]+最小的值 都比target大,所以price[right]应该被舍去right--。如果price[left]+prince[righrt] < target,说明price[left]+最大的值 都比target小,所以price[left]应该被舍去left++。当nums[i] == -(nums[left]+nums[right])时,left++和right--,直到不和上个元素相同。原创 2024-01-08 12:05:31 · 422 阅读 · 0 评论 -
双指针刷题(三)
说明[left,right]区间内不是所有的元素都可以构成三角形,left++,直到区间内所有元素都可以构成三角形。已知三边a,b,c,三边大小依次递增,判断是否能构成三角形,仅需判断a+b>c,判断一次即可。如果left+right 大于i,说明在[left,right]3.在最大的数左边的区间内采用双指针算法,统计三角形的个数。这个区间内所有的元素都可以构成right-left个三角形。4.只需判断left + right 是否大于 i,给一个非负的数组,判断这个数组能组成多少个三角形。原创 2023-12-31 16:28:41 · 425 阅读 · 0 评论 -
双指针刷题(二)
这两个指针,那个指针指向的板子高度低,哪个向中间移动,因为向中间移动,x轴会变短,容积会减小,向中间移动长板子的指针,容积要么减小要么不变,移动指向短板子的指针,容积要么不变要么变大。把一个正整数n的每一位都平方后相加,一直重复这个过程,在这个过程中如果出现1,说明这个数是快乐的,如果没出现就会陷入循环。我们可以把这两种情况抽象成一种情况,两种情况都会进入循环,只不过第一种情况进入的都是1的循环中。有一个存储板子的高度的数组,这些板子是可以切换的,问这些板子和x轴围成的容器,最大的容积是多少。原创 2023-12-31 10:44:36 · 397 阅读 · 0 评论 -
双指针刷题(一)
先判断cur位置的值决定dest要向后移动一步或两步判断dest是否到数组的末尾cur++原创 2023-12-28 19:14:14 · 745 阅读 · 0 评论