力扣-200.岛屿数量

刷力扣热题--第二十四天:200.岛屿数量

新手第二十四天 奋战敲代码,持之以恒,见证成长

1.题目描述

2.题目解答

这道题刚开始想的确实想的绞尽脑汁的,看了相关解答才明白的,三种方法,这里想先用两种方法进行实现,一个深度优先,一个广度优先。深度优先就是从一个点遍历直至到底,再向上一层,一个一个遍历,广度优先就更类似于树的层序遍历,最后岛屿的个数就是搜索的次数。

(1)广度优先搜索

使用双端队列的方式第一次见,所以这里参考的是力扣官网的写法,自己还得再理解消化一下~

(2)深度优先搜索

深度优先目前位置还是不太会实现,等在理解理解,扎实一下算法~

3.心得体会

(1)广度优先搜索

python 复制代码
class Solution(object):
    def numIslands(self, grid):
        """
        :type grid: List[List[str]]
        :rtype: int
        """
        if len(grid) == 0:
            return 0
        nums = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == "1":
                    nums += 1
                    grid[i][j] = "0"
                    neighbors = collections.deque([(i, j)])
                    while neighbors:
                        row, col = neighbors.popleft()
                        for x, y in [(row - 1, col), (row + 1, col), (row, col - 1), (row, col + 1)]:
                            if 0 <= x < len(grid) and 0 <= y < len(grid[0]) and grid[x][y] == "1":
                                neighbors.append((x, y))
                                grid[x][y] = "0"
        return nums
        

(2)深度优先搜索

python 复制代码
class Solution(object):
    def numIslands(self, grid):
        """
        :type grid: List[List[str]]
        :rtype: int
        """
        def dfs(grid, r, c):
            grid[r][c] = 0
            nr, nc = len(grid), len(grid[0])
            for x, y in [(r - 1, c), (r + 1, c), (r, c - 1), (r, c + 1)]:
                if 0 <= x < nr and 0 <= y < nc and grid[x][y] == "1":
                    dfs(grid, x, y)

        if len(grid) == 0:
            return 0
        nums = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == "1":
                    nums += 1
                    dfs(grid,i,j)
        return nums
        

4.做题时长

8月2日 16:45-17:30 终于,这件事情坚持了一个月了,最近一直在看奥运会,奥运精神极大的感染了我,每当五星红旗冉冉升起的时候,就会觉着自己走的每一步都是有意义的,青年一代的热血,未来必将会洒向祖国需要的地方!

相关推荐
SweetCode10 分钟前
裴蜀定理:整数解的奥秘
数据结构·python·线性代数·算法·机器学习
ゞ 正在缓冲99%…23 分钟前
leetcode76.最小覆盖子串
java·算法·leetcode·字符串·双指针·滑动窗口
xuanjiong23 分钟前
纯个人整理,蓝桥杯使用的算法模板day2(0-1背包问题),手打个人理解注释,超全面,且均已验证成功(附带详细手写“模拟流程图”,全网首个
算法·蓝桥杯·动态规划
惊鸿.Jh43 分钟前
【滑动窗口】3254. 长度为 K 的子数组的能量值 I
数据结构·算法·leetcode
明灯L43 分钟前
《函数基础与内存机制深度剖析:从 return 语句到各类经典编程题详解》
经验分享·python·算法·链表·经典例题
碳基学AI1 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义免费下载方法
大数据·人工智能·python·gpt·算法·语言模型·集成学习
补三补四1 小时前
机器学习-聚类分析算法
人工智能·深度学习·算法·机器学习
独好紫罗兰1 小时前
洛谷题单3-P5718 【深基4.例2】找最小值-python-流程图重构
开发语言·python·算法
正脉科工 CAE仿真1 小时前
基于ANSYS 概率设计和APDL编程的结构可靠性设计分析
人工智能·python·算法
Dovis(誓平步青云)2 小时前
【数据结构】排序算法(中篇)·处理大数据的精妙
c语言·数据结构·算法·排序算法·学习方法