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

maimimum moving avarage:

 

maimimum moving max:

:可以一用heap么。不可以,因为不知道pop的是不是头

:可以用sorted stack

:思路:,squential,,,每到一个ele时,有可能时后面max,所以先判断前面《的话,删掉然后加上本个ele,》的话直接加上,因为stack村的是有可能是max的东西。  如果move 后out of window,先删除对应操作,这样stack顶永远是max当前window。   

这样用的就是deque,或者double linklist,

out of window 的时候要注意判断头部是不是out? index stack:记录index,,然后j-i>=k,就是out  of window

 

dfs  stack的模板:

DFS(s,g):

   stack s,

   end constraint g,

  initilaize s:  push first node to s and visited hashet, parent hashmap.

  while(stack not empty:){

            pop node;

           if(cur==G) return 

           for (each neighburs not visited){

                 add neighvbut to visited

                add cur as parent of n

               push n onto stack

 

 

 

 

 

  • 图论

1.Maze  ,  2D array,  赵路径

例题:maze II。

 

使用的三个数据结构:“hash set, bisited”"hahmap,path"  "stack或者queue"

 

C++中可以用vector<bool>也可以待变visited

看题目要求是不是要path,如果去找neighbour,  

 

Maze中可以用i,j+-1,或者用一个direction矩阵代表更多方向,然后for循环去迭代方向

 

2. 2D array   all points

 

flood fill.    填色

 

思路:single point dfs/bfs都可以,  时间complexity都一样  |V|+|E|.

dfs  的recursion的代码量简洁。

 

 

例题:number of island。

思路,for矩阵,然后dfs开始,碰到1就边0,然后整体计算number

,all points 的dfs就是for single point的dfs

   

3。 friend circles,  邻接矩阵,像但由于是一个对角线的all points

可以用dfs找path,如果能有一条path,说明一个circle,没有说明第二个circle

for  i  是代表人,利用visted代表circle,dfs之后count++就是circle的数量

 

 

4.  例题:pacific atlantic water flow.

还可以用dp的结果,避免重复计算

,可以:aLL points+DP

DP里面不同的值来代表不同的意思

还要回溯,底部true,回溯回去也要true,一路的retrun

selected point:

 

 

5. non 2D array   

 

例题:word ladder

 

思路:每个word是一个vertex,

可以用stack。

要解决的问题:neighbour,hashset,hahmap,start

这里难点在于如何判断neighbour,

 

思路,可以对于当前单词进行每个位置的字母改变,然后find 字典里是否有出现。

 

BFS可以求最短路径

[展开全文]

授课教师

课程特色

视频(25)

学员动态

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