欢迎光临散文网 会员登陆 & 注册

数组&双指针

2023-01-18 09:38 作者:raft0065  | 我要投稿

数组上的双指针使用 Two Pointers

视频一:同向双指针 简洁模板【基础算法精讲 01】

视频二:两数之和 三数之和【基础算法精讲 02】

视频三:盛最多水的容器 接雨水【基础算法精讲 03】

同向双指针

    灵神说一般把“窗口大小不固定的叫做双指针,窗口大小固定的叫滑动窗口”,我觉得十分合理。双指针的题目关键在于从右端点开始遍历枚举,这不仅免除了一些判断的细节,模版也十分通用。当然这样的由双指针指向的子数组一般需要满足某种单调性,具体常常体现在数组元素都是正数这样的题设条件上。

    这道209题中规中矩,主要是适应一下这种模版的书写方式。

    这题稍微麻烦点,主要是当一个子数组合法时,以该子数组右端点合法子数组一共有right-left+1个,这一点如果一开始就是枚举右端点的话,应该不难想到。其他没什么意思。

    这题换汤不换药,多了个hashMap用于快速获取子串内的个元素的出现频率。

    这题是打周赛的时候遇到的,也是看到了灵神的题解广告才去的他B站开始看视频。这题我感觉有点难吧。。。如果要是之前没有接触过该类模版,比赛时我这脑子鬼TM想的出来喔!


相向双指针

    和同向双指针不同,相向双指针的题一般需要先对数组经过排序。在一个有序的数组里找答案,为了节省时间复杂度,有时可以通过左右指针相向逼近去做,相遇时停止。

    这题有双指针思维的应该很容易想到。

    两个时间优化可以不加,稍微慢点。主要是除重,之前都是用set做,这里直接除,空间复杂度更好一些吧。我感觉没必要,就是练练相向双指针技巧。两数之和,三数之和,四数之和之前微软模拟面试的时候,妈的一起模拟的好多人都是假装思考,然后秒出答案,题都做烂了,没意思。

    这题应用同样的木桶思想可以求出,不过接雨水都接魔怔了,很多解法,单调栈啥的,写过就忘,傻比一样没意思。这里记录一下。第二种用滚动数组优化了下,空间效率好点。灵神tql...

数组&双指针的评论 (共 条)

分享到微博请遵守国家法律