7人加入学习
(0人评价)
CS算法集训班
价格 $99,999美元
该课程属于 2023.7.9 CS课程 请加入后再学习
  • sliding window

属于2 pointer的子集,都是从前往后走

例题:remove duplicated from sorted array

思路:end往后走直到最后一个different。然后start是第一个diff, 所以in place的算法是吧dif的ele move到start,start+1.

so  start: is the first distinct的position

end是来判断,if dif的话就跟start换位置,if equal则end+1

 

思路:hashset可以用,o(n)和o(n)

duplicates可以用hashtable

例题:如果diuplicate的出现次数k,

 

思路:那么判断start的前面有几个,或者判断end-2和end是否一样或者j-i>=2

 

例题:remove element:(inplace)

start是第一个1的位置,然后end是non-1,然后swap,然后i+1,j都要加1,

所以一开始的start是先找到对应1(要先for),也可以不用

for(int i,j;i<len&j<len;j+1){ if (nums[i]!=1) start+=1}

 

例题:  maximum average subarray.

start 是maxim的start。  end++,一个global max,然后更新start。end往前数,然后maximum可以减去头+尾。单个for就可以

思路:也可以累加,然后减去前面k的元素当前的和,然后就是当前的k个和

例题:sliding  window 3

 

思路:rolling hash,利用hashcode计算,而且可以偷懒,类似于上面的去头加尾

 

 

例题:subarrayproduct less than k

start和end,end先移动到最小不满足,然后startmove到满足,这其中每一个sub都是满足的

但是计算的是number,而不是每一个subarray,所以j-i+1是多的validwindow,计算

 

例题: sliding window 2:

 

例题:minimum size subarray sum

 

思路:start,end中间的和,global存储当前的最短,if sum>k,则start+1. 然后继续end+1判断。  start<end肯定

for内嵌while (i),但是i和j相对独立,所以时间复杂度是O(n)

 

例题:sliding window IV

 

例题:longest substring without repeating characters

 

 

区分subsequence和esubarray

遇到duplicate,repeateing,exist,unique都可以用hashmap来解决

 

[展开全文]

授课教师

课程特色

视频(25)

学员动态

Shuhao 加入学习
Bianyw 加入学习
shjm 加入学习
YanHuang 加入学习
duoduo99 加入学习