面试算法题的一点心得
爱吃番茄的小浣熊
面试的时候,基本都会有一轮coding。
对于coding的提高,因人而异。
这里我讲讲我个人的方式。我喜欢按类别分,每个类别掌握,主要的思想,特定的template,和几个例子。
因为我用于刷题的时间都比较少,所以我基本都是两三个例题。
根据最近面试做的题来看,如果广泛地说,可以将其中几类归结于下面一大类。
=》遍历
===》在处理当前遍历的元素时,维持特定的数据结构,从而实现快速获取对应的信息。
比如求解分段给出的数组的长度为k的最大和的子数组。使用slicing window,在遍历元素的时候,通过维持window类特定的数据结构,得到相应的信息。这里的特定数据结构是sorted list.
比如求解每个元素的next bigger number,通过维持递减的单调栈,获取比当前元素小的数的索引。
而在维持数据结构的时候,通常需要使用while loop,if结构来维持数据结构。
通过以上分析,我们可以看到,需要做到下面的两点:
一、能正确选择需要维持数据结构。常见的数据结构,数组,map,sorted list, sorted arrary, 单调栈。
二、能正确的使用while或者if更新对应的数据结构。在这里,需要注意的点有索引的计算,这里需要减去1.相应地,当前索引为i,那么k个元素以前的索引对应为i-k。这是因为,包含在k个元素的起始元素是i-k+1,那么它的前一个就是i-k。
对于slicing window, 我在亚麻的OA遇到了,记录在 www.1point3acres.com/bbs/thread-1...2443-1-1.html
对于coding的提高,因人而异。
这里我讲讲我个人的方式。我喜欢按类别分,每个类别掌握,主要的思想,特定的template,和几个例子。
因为我用于刷题的时间都比较少,所以我基本都是两三个例题。
根据最近面试做的题来看,如果广泛地说,可以将其中几类归结于下面一大类。
=》遍历
===》在处理当前遍历的元素时,维持特定的数据结构,从而实现快速获取对应的信息。
比如求解分段给出的数组的长度为k的最大和的子数组。使用slicing window,在遍历元素的时候,通过维持window类特定的数据结构,得到相应的信息。这里的特定数据结构是sorted list.
比如求解每个元素的next bigger number,通过维持递减的单调栈,获取比当前元素小的数的索引。
而在维持数据结构的时候,通常需要使用while loop,if结构来维持数据结构。
通过以上分析,我们可以看到,需要做到下面的两点:
一、能正确选择需要维持数据结构。常见的数据结构,数组,map,sorted list, sorted arrary, 单调栈。
二、能正确的使用while或者if更新对应的数据结构。在这里,需要注意的点有索引的计算,
以下为本帖隐藏内容,您已经可以浏览
比如知道索引i,那么构成长度为k的序列对应的最后一个元素是i+k-1。
对于slicing window, 我在亚麻的OA遇到了,记录在 www.1point3acres.com/bbs/thread-1...2443-1-1.html
已获得 2 大米
共4条回复
✨ 您正在体验新版论坛UI


