LeetCode刷题
本专题主要是想通过刷题来熟悉Go语言语法。
学徒。
问渠那得清如许?为有源头活水来
展开
-
220. 存在重复元素 III
对于本题,由于题中限定了abs(i - j) <= k的条件,应该首先想到滑动窗口,因为滑动窗口可以满足此限定。在窗口内对的数据进行相关操作来判断是否有符合题意的数据首先窗口的大小应该为k,这样可以满足题中的 abs(i - j) <= k 条件。其次,对于窗口内的数据,可以采用两个for循环来进行判断是否有满足题意的组合。由于题中要求的是相减的绝对值,这样对于for循环,就可以省去一半的循环了,因为 |a - b | = |b - a|以下是Go语言代码:func containsN.原创 2021-07-04 01:15:22 · 137 阅读 · 0 评论 -
209. 长度最小的子数组
题目:题解:对于本题,题中有个字眼是要求连续子数组,对于这种要求连续的,应当首先考虑滑动窗口。然后题中是要求找出最短的连续子数组因此在遍历这个数组时,大体的思路如下:窗口内值的合 < target : 窗口长度+1窗口内值的合 >= target : 当前窗口长度与所记录的最短长度进行比较,并将窗口长度-1对于窗口长度的+1操作,是窗口右边扩容一个元素 , 对于窗口长度-1的操作,是从左边减去一个元素以下是Go语言代码:func minSubArrayLen(target i原创 2021-07-03 02:45:26 · 102 阅读 · 0 评论 -
187. 重复的DNA序列
题目:题解:题中说明了长度为10.因此可以采用滑动窗口的思路来解决这道题。首先可以维护一个长度为10的窗口用于截取字符串,然后对于窗口内的字符串,需要判断之前是否出现过,若之前只出现过则将其加入到结果列表中,循环移动窗口,最后再对结果列表进行去重即可。对于上述的,如何判断字符串是否出现过,可以使用map的数据结构来进行,每出现一次对应以字符串为key的value值+1若使用 Java来编写这道题,可以利用set的数据结构,初始化两个set,每次移动一次窗口,就将截取到的字符串判断是否在第一个se原创 2021-07-03 02:43:28 · 122 阅读 · 0 评论