LeetCode经典BFS题目详解
引言 在学习完BFS的基本概念和实现方式后,最好的学习方法就是通过实际问题来加深理解。本文将详细讲解几个经典的BFS题目,这些题目代表了BFS在不同场景下的应用: 树的层次遍历 - 最基础的BFS应用 图的遍历和搜索 - 处理网格和矩阵问题 状态转换问题 - 寻找最短路径 多源BFS - 处理多个起点的情况 通过这些题目,我们将看到BFS如何巧妙地解决各种实际问题。...
引言 在学习完BFS的基本概念和实现方式后,最好的学习方法就是通过实际问题来加深理解。本文将详细讲解几个经典的BFS题目,这些题目代表了BFS在不同场景下的应用: 树的层次遍历 - 最基础的BFS应用 图的遍历和搜索 - 处理网格和矩阵问题 状态转换问题 - 寻找最短路径 多源BFS - 处理多个起点的情况 通过这些题目,我们将看到BFS如何巧妙地解决各种实际问题。...
一、BFS基本概念 1. 什么是BFS? 广度优先搜索(Breadth-First Search,简称BFS)是一种用于遍历或搜索树/图的算法。它的特点是: 从起点开始,逐层遍历 先访问离起点近的节点,再访问离起点远的节点 保证找到的路径是最短路径 想象你在一个游乐园里找朋友: 你先在当前位置环顾四周 然后向外扩展一圈,检查附近的区域 如此扩展下去,直到找...
一、岛屿数量(LeetCode 200) 问题描述 给定一个由 ‘1’(陆地)和 ‘0’(水)组成的二维网格,计算岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 思考过程 问题分析 我们需要找到所有相连的陆地群 每个陆地群就是一个岛屿 陆地只能上下左右相连 需要避免重复计算同一个...
一、DFS基本概念 1. 什么是DFS? 深度优先搜索(Depth-First Search,简称DFS)是一种用于遍历或搜索树/图的算法。它的特点是: 沿着一条路径一直走到底 当无法继续前进时才回溯 确保访问到所有的节点 想象你在走迷宫: 每到一个分岔路口,你总是先选择一条路一直走 走到死胡同时,才返回到最近的分岔路口,选择另一条路 这就是DFS的基本思...
题目描述 给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。 示例 1: 输入:num = "1432219", k = 3 输出:"1219" 解释:移除掉三个数字 4, 3, 和 2 后,剩下的数字是 "1219",这是可能的最小值。 示例 2: 输入:num = "10200", k =...
背景介绍 在计算机科学中,我们经常需要解决”找到数组中下一个更大/更小元素”、”寻找数组中的模式”等问题。传统的方法可能需要嵌套循环,时间复杂度达到O(n²)。单调栈的出现为这类问题提供了一个优雅且高效的解决方案。 基本概念 什么是单调栈? 单调栈是一种特殊的栈结构,其中的元素保持单调递增或单调递减的顺序。与普通栈相比,单调栈在插入新元素时会维护这种单调性,必要时会弹出栈顶元素。 ...
一、贪心算法概述 1. 什么是贪心算法 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最好或最优的选择,从而期望导致结果是全局最优解的算法策略。它的核心是: 通过局部最优选择 期望达到全局最优解 一旦做出选择,不再回退 2. 算法核心特征 贪心选择性质: 每步选择都是当前状态下最优的 不考虑后续影...
题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。 ...
“括号生成”是一道经典的回溯算法题目。要求生成所有有效的括号组合,其中 n 对括号需要满足以下条件: 括号必须正确匹配 生成的括号对数为 n 需要列出所有可能的合法括号组合 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 提示: 1 &l...
在这篇文章中,我们将探讨如何使用 Swift 解决 LeetCode 上的经典问题——最长公共前缀。这个问题要求我们找出一个字符串数组中所有字符串共有的最长前缀。如果不存在公共前缀,则返回空字符串。这个问题在实际开发中非常常见,尤其是在处理字符串比较和文本处理时。 题目描述 给定一个字符串数组 strs,找出所有字符串中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例...