Facebook, LinkedIn, Uber高频面试题Minimum Window Substring

Minimum Window Substring不仅是Facebook, LinkedIn, Uber等公司的高频面试题,也是一道非常经典的Sliding Window的题目。


本期习题讲解,我们就来给大家讲讲这道题的解法,让你在面试中遇见类似的题目时,也可以轻松解答。



先一起来看看题目:


Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).


For example,


S = "ADOBECODEBANC"

T = "ABC"


Minimum window is "BANC".


Note:


If there is no such window in S that covers all characters in T, return the empty string "".


If there are multiple such windows, you are guaranteed that there will always be only one unique minimum window in S.


这道题目的考点涉及到Sliding Window算法,以及String 字符串、Hash Table 哈希表、Two Pointers 双指针等,是一道比较有难度的面试题,大部分情况下会在onsite中出现。


Sling Window的思路相对比较好想,但难点在于implementation


很多同学在面试中,明明已经解释清楚了题目的算法,但在写代码的过程中,却容易出现很多细节问题,从而被面试官challenge。


所以,这个视频就想通过讲解一道经典的sliding window问题,告诉大家如何去表达sliding window的算法,并写出正确、优雅的代码。


接下来,我们有请Emma老师为我们详解这道题的答案:


主讲人:Emma老师


FLGU一线公司资深工程师


这道题目的整体思路是使用一个快指针,和一个慢指针。


快指针从左向右移动,目的是在每个快指针停留的位置,找到以其为结尾的最短满足要求的substring。在快指针向右移动的时候,慢指针也需要相应的向右移动。


这里我们之所以能够使用Sliding Window的算法,是因为,当快指针向右移动的时候,其对应的慢指针必然无需向左移动。


此题的重点在于:



如何来记录sliding window部分(两个指针之间),能比较有效的表示跟target string T匹配的情况,以此来决定慢指针向前移动多少个位置,并且让两个指针移动的时候开销最小。



具体细节和过程请观看视频的讲解。



代码中需要注意的细节处理及时间、空间复杂度分析请观看视频讲解。



更多免费习题讲解视频,请关注“来Offer网”


猜你喜欢

转载自blog.csdn.net/laioffer/article/details/80073103