leetcode-深度优先搜索
深度优先
我们想要遍历一棵树也好,图也好,当我们想要遍历整个结构,查看所有组合的时候,深度优先搜索是一种选择。
做法可以参考下面例题,深度优先要结合递归使用,当我们想搜索出全部的路径,就要把结果的可能在递归结束的时候解决。比如我们找到了叶节点,在判断结束递归之前,用一个比如vector容器储存该结果。
用什么储存呢,从我们刚开始搜索的时候,也就是递归的入口,准备一个string,我们一直维护这个string,像下递归的时候也要传递下去。当我们某一个节点被递归到的时候,string添加字符,并开始下一层递归。
当返回之前,需要将本次添加的再给弹出,也就是回溯。我们想选择和当前节点同一等级的其他节点,就要把当前的弹出。
当然这种说法有些片面,总之我们需要思考,我们找的各种组合,什么时候加入进结果,什么时候回溯,什么时候向下递归。
leetcode17:电话号码的字母组合(没看到有4位的,我当成都是3位写的,4位的可以通过哈希表,智能指针进行for循环,我这里都定义3个了)
class Solution {vector<string> result;
public:vector<string> letterCombinations(string digits) {if(digits.length()==0){return result;}string tmp;for(int i = 0; i < 3; i++){tmp = "";tmp.push_back((digits[0]-'2')*3 + 'a' + i);letterCombinations(digits, 1, tmp);}return result;};void letterCombinations(string digits, int index, string tmp){cout << tmp << " ";if(index == digits.length()){result.push_back(tmp);return ;}for(int i = 0; i < 3; i++){tmp.push_back((digits[index]-'2')*3 + 'a' + i);letterCombinations(digits, index+1, tmp);tmp.pop_back();}return;}
};
leetcode-深度优先搜索相关推荐
- 【LeetCode 深度优先搜索专项】不同岛屿的数量 II(711)
文章目录 1. 题目 1.1 示例 1.2 说明 1.3 提示 1.4 进阶 2. 解法一(深度优先搜索) 2.1 分析 2.2 解答 2.3 复杂度 1. 题目 给定一个 m×nm \times n ...
- leetcode dfs_深度优先搜索:具有6个Leetcode示例的DFS图遍历指南
leetcode dfs Have you ever solved a real-life maze? The approach that most of us take while solving ...
- LeetCode算法总结-回溯法与深度优先搜索
转载自 LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退 ...
- LeetCode刷题——剑指offer深度优先搜索题目汇总
剑指offer深度优先搜索题目汇总 剑指 Offer 12. 矩阵中的路径 剑指 Offer 34. 二叉树中和为某一值的路径 剑指 Offer 36. 二叉搜索树与双向链表 剑指 Offer 54. ...
- LeetCode解析------111. 二叉树的最小深度-深度优先搜索
题目: 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15 ...
- 学会二叉树不知道干啥?二叉树的深度优先搜索和广度优先搜索,我要打十个乃至二十个(打开你的LeetCode撸起来)学练并举
目录 一. 图解二叉树的深度优先搜索 二. 二叉树的广度优先搜索 (层序遍历) 三. 打开LeetCode 撸起来 至此, 咱多少被刚刚的后序非递归搞得可能有点小晕晕的, 没事,层序简单呀.... ...
- leetcode 559. N 叉树的最大深度(Java版,N叉树的深度优先搜索)
题目 https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/ 题解 思路是 N 叉树的遍历(深度优先搜索) /* // Defini ...
- C#LeetCode刷题-深度优先搜索
深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树 22.2% 中等 99 恢复二叉搜索树 45.1% 困难 100 相同的树 48.1% 简单 101 对称二叉树 42.1% 简单 ...
- 【深度优先搜索】leetcode 1905. 统计子岛屿
1905. 统计子岛屿 文章目录 题目描述 示例1: 示例2: 提示 方法:深度优先搜索 解题思路 代码 复杂度分析 题目描述 给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只 ...
- 深度优先搜索的概念原理、模板和leetcode刷题推荐(js)
概念 深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 我的理解为:深度优先 ...
最新文章
- 微信好友数据打包下载--微信数据分析(二)
- KVM console 串口连接虚拟机
- 良/恶性乳腺癌肿瘤预测
- SQL优化之列裁剪和投影消除
- Web学习之跨域问题及解决方案
- boost stacktrace堆栈打印
- python处理地震sac数据_地震数据SAC格式
- 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境
- 工程图字体宋体仿宋_电纸书kindle字体推荐——耐看、悦目、经典
- android 渐变歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变
- 重启linux系统后 启动mysql ERROR! The server quit without updating PID file /var/run/mysqld/mysqld.pid
- C# 基础(三十一)c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
- 【爬虫】爬取个人随手记账户
- matlab 稀疏随机矩阵,Matlab 稀疏矩阵函数
- 程序员眼中的漫威!太有才了!
- 前馈神经网络与支持向量机实战 --- 手写数字识别
- 微信云函数的使用步骤
- Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、LIO-SAM 和 LVI-SAM
- allow_pickle什么意思_in pickle是什么意思
- linux shell 操作二进制文件(xxd、dd)
热门文章
- h3c使用acl控制ftp访问_H3C访问控制列表(ACL)实例精华
- C++ 空间配置器(allocator)
- PAT乙级(1016 部分A+B)
- 日期处理——日期差值
- linux php文件,Linux php文件安装目录在哪
- linux中物理cpu、逻辑cpu以及core、vcore
- 下载丨Oracle 12c最佳参数实践
- 近千人观看live,晚8点继续安排,2个CPU过高案例+1个文件数据删除案例-Oracle故障分析的方法论+DBA能力提升要领...
- 基于多源数据画像的失败用例智能分析
- 华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”