是陈浩(网名左耳鼠)在极客时间栏目发起的一项活动,目的是通过分享学习来坚持。每人每周写一篇ARTS:Algorithm是一道算法题,Review是看一篇英文文章,Technique/Tips是分享一个小技巧,Share是分享一个观点。本周内容本周ARTS你会看到:LeetCode200NumberofIslands看似连通域,其实是扫雷?什么是页面缓存?你在面试中遇到过PUA吗?Algorithm这周要讲LeetCode200NumberofIslands。这是一个关于“连通域”的问题,即0包围了多少个1的区域。需要注意的一点是,遍历整个矩阵是不可避免的,一个“岛”可能包含多个1,那么如何防止一个岛被重复计算?一个简单的方法是找到一个岛,并将其所有节点标记为0。这样可以防止该岛被重复计算。那么如何将所有找到的岛屿标记为0呢?最简单的回答方法是DFS。找到某个点为1后,对该点的“上下左右”进行DFS,直到知道找不到1为止。funcnumIslands(grid[][]byte)int{varansintiflen(grid)==0{returnans}nc,nr:=len(grid),len(grid[0])vardfsfunc(c,rint)//通过深度优先遍历,将所有相同的岛设置为0dfs=func(c,rint){grid[c][r]='0'ifc>0&&grid[c-1][r]=='1'{dfs(c-1,r)}如果c
