【c++刷题】leetcode 200. 岛屿数量

思路

深度优先搜索是一种递归的搜索算法,其核心思想是从一个节点开始,沿着一条路径尽可能深地探索下去,直到无法继续,然后回溯到上一个节点,继续探索其他路径。在本题中,我们可以将二维网格中的每一个 ‘1’(陆地)看作一个节点,通过 DFS 算法将与该节点相连的所有陆地都标记为已访问,这样就可以将一个岛屿整体处理。通过遍历整个二维网格,每当遇到一个未被访问的陆地时,就进行一次 DFS 搜索,每进行一次 DFS 搜索就意味着发现了一个新的岛屿,最终统计 DFS 搜索的次数即可得到岛屿的数量。

解答

class Solution {
   
   
public:
    int rows;
    int cols;

    void 
### 如何用C++LeetCode的最佳实践 #### 使用C++进行LeetCode编程练习的重要性 由于C++设计感强,STL作为其泛型编程的杰出代表作,在掌握了C++基本语法以及STL中的容器与算法之后,已经具备了解决大多数编程挑战的基础[^1]。 #### 资源推荐 为了更高效地利用C++LeetCode平台上进行训练,《剑指 Offer》这本书籍及其配套的Python、Java和C++代码库是一个很好的起点。此资源不仅提供详细的解答思路,还涵盖了多种实现方式,有助于加深对问题的理解[^2]。 #### 平台特点 LeetCode平台本身拥有大量精心挑选并按难度分级编排的问题集,这些问题广泛涉及各种类型的算法和数据结构,非常适合用来提高个人技能水平。更重要的是,这些目通常反映了实际工作中可能遇到的情况或是编程比赛中的典型考形式[^3]。 #### 策略 当准备着手解决问题时,建议先浏览一下该所关联的知识领域标签(例如:“数组”,“字符串”,“链表”),这样可以帮助快速定位所需复习的概念和技术要点。针对不同的数据结构类别采取相应的学习方法: - **链表**:重点在于理解指针的工作原理及如何有效地管理内存分配; - **树和图**:则需深入研究递归遍历和其他高级搜索技术来应对更加复杂的逻辑关系[^4]。 ```cpp // 示例:简单的二分查找函数实现 #include <vector> using namespace std; int binarySearch(const vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; while (left <= right) { int mid = left + (right - left) / 2; // 防止溢出 if (nums[mid] == target) return mid; else if (nums[mid] < target) left = mid + 1; else right = mid - 1; } return -1; // 如果找不到目标,则返回-1表示未找到 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值