DFS:从递归去理解深度优先搜索

一、深入理解递归

二、递归vs迭代 

 三、深入理解搜索、回溯和剪枝

 四、汉诺塔问题

. - 力扣(LeetCode)

class Solution {
public:
//笔试题,不讲武德,C=Avoid move(int n,vector<int>& A, vector<int>& B, vector<int>& C)//实现从a经过b这个辅助盘子移到c{//设置函数出口if(n==1) //此时不能再分割子问题了 直接给C即可{C.push_back(A.back());A.pop_back();return;}//先把a的前n-1个通过c移到bmove(n-1,A,C,B);//然后将A的最后一个盘子移到C上C.push_back(A.back());A.pop_back();//然后将b上的n-1个盘子通过A移到cmove(n-1,B,A,C);}void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {int n=A.size();return move(n,A,B,C);}
};

五、合并两个有效链表

. - 力扣(LeetCode)

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2){if(list1==nullptr) return list2;else if(list2==nullptr)  return list1;else if(list1->val<list2->val) {list1->next=mergeTwoLists(list1->next,list2);return list1;}else {list2->next=mergeTwoLists(list2->next,list1);return list2;}    }
};

六、反转链表

. - 力扣(LeetCode)

class Solution {
public:ListNode* reverseList(ListNode* head) {if(head==nullptr||head->next==nullptr)  return head;;ListNode*ret=reverseList(head->next);head->next->next=head;head->next=nullptr;return ret;}
};

七、两两交换链表

. - 力扣(LeetCode)

class Solution {
public:ListNode* swapPairs(ListNode* head) {if(head==nullptr||head->next==nullptr) return head;ListNode*temp=swapPairs(head->next->next);ListNode*ret=head->next;ret->next=head;head->next=temp;return ret;}
};

八、快速幂

. - 力扣(LeetCode)

 1、迭代

class Solution {
public:double myPow(double x, long long n) //修改参数,将传进来的值都转化成;long long 类型,避免溢出{if(n==0) return 1;if(n<0) return myPow(1/x,-n) ;double ans=1.0;while(n){if(n&1) ans*=x;//说明最低位为1,要乘以xx*=x;n>>=1;}return ans;}
};

2、递归

class Solution {
public:double myPow(double x, long long n) //修改参数,将传进来的值都转化成;long long 类型,避免溢出{if(n==0) return 1;if(n<0) return 1/myPow(x,-n);double temp=myPow(x,n/2);//快速计算前一半的结果return n%2==0?temp*temp:temp*temp*x;}
};

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/574028.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA- SPRINGBOOT+VUE 大文件断点续传

版本&#xff1a;6.5.40 代码&#xff1a;up6-jsp-springboot: Web大文件上传-jsp-springboot示例 - Gitee.com nosql示例 nosql示例不需要进行任何配置&#xff0c;可以直接访问测试。 SQL示例 1.创建数据库 2.配置数据库连接 3.自动下载maven依赖 4.启动项目 启动成功 6.访…

Elasticsearch从入门到精通-07ES底层原理学习

Elasticsearch从入门到精通-07ES底层原理和高级功能 &#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是程序员行走的鱼 &#x1f4d6; 本篇主要介绍和大家一块学习一下ES底层原理包括集群原理、路由原理、分配控制、分配原理、文档分析原理、文档并发安全原理以及一些高…

IDEA的使用(概念,安装,配置,)以及什么是字符集,模版

目录 Intellij IDEA IDE的概念 IntelliJ IDEA的安装 IntelliJ IDEA的使用 基本配置 JDK配置 创建Module 基本用法 字体配置 主题配置 字符集 设置IDEA默认字符集 注释模板 字符集 字符集简介 常见字符集 Intellij IDEA 我们不可能一直使用记事本之类变成&#…

验证码demo(简单实现)

前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool&#x1f36c;…

前几日总结 , 树型结构--》二叉树,二叉树的创建与销毁,二叉树的遍历

树型结构 &#xff1a;特点为 一对多 概念&#xff1a; 由n个结点组成的有限集 有一个根结点&#xff1b;其他结点只有一个前驱结点&#xff0c;但可以有多个后继结点&#xff08;一对多&#xff09; n 0时为空树 专业词汇&#xff1a; 叶子结点&#xff08;终端结点 &am…

Git的原理和使用(四):理解分布式版本控制系统与远程仓库的相关配置

目录 远程操作 理解分布式版本控制系统 远程仓库 新建远程仓库 克隆远程仓库 向远程仓库推送 拉取远程仓库 配置Git 忽略特殊文件 为命令配置别名 标签管理 理解标签 创建标签 操作标签 远程操作 理解分布式版本控制系统 1、每个人的电脑都是一个完整的版本库&…

面试准备-基础【面试】

面试准备-基础【面试】 数据结构二叉树完全二叉树满二叉树BST 二叉排序树|二叉搜索树AVL 平衡二叉树B树 多路平衡查找树B树红黑树哈夫曼树散列 操作系统面试题并行和并发什么是进程&#xff1f;进程和程序的区别&#xff1f;进程的基本状态什么是线程&#xff1f;线程和进程的区…

【Linux】 gcc(linux下的编译器)程序的编译和链接详解

目录 前言&#xff1a;快速认识gcc 1. 程序的翻译环境和执行环境 2.编译和链接 2.1翻译环境 2.2编译环境 1. 预处理 gcc -E指令 test.c&#xff08;源文件&#xff09; -o test.i&#xff08;生成在一个文件中&#xff0c;可以自己指定&#xff09; 预处理完成之后就停下来&am…

【YOLOV5 入门】——detect.py简单解析模型检测基于torch.hub的检测方法

声明&#xff1a;笔记是毕设时根据B站博主视频学习时自己编写&#xff0c;请勿随意转载&#xff01; 一、打开detect.py&#xff08;文件解析&#xff09; 打开上节桌面创建的yolov5-7.0文件夹里的detect.py文件&#xff08;up主使用的是VScode&#xff0c;我这里使用pycharm…

浅模仿小米商城布局(有微调)

CSS文件 *{margin: 0;padding: 0;box-sizing: border-box; }div[class^"h"]{height: 40px; } div[class^"s"]{height: 100px; } .h1{width: 1528px;background-color: green; } .h11{background-color:rgb(8, 220, 8); } .h111{width: 683px;background-c…

课堂行为动作识别数据集

一共8884张图片 xml .txt格式都有 Yolo可直接训练 已跑通 动作类别一共8类。 全部为教室监控真实照片&#xff0c;没有网络爬虫滥竽充数的图片&#xff0c;可直接用来训练。以上图片均一一手工标注&#xff0c;标签格式为VOC格式。适用于YOLO算法、SSD算法等各种目标检测算法…

数字化运营策略大揭秘:畅销书《数字化运营》详解

简介 数字化转型已经成为大势所趋&#xff0c;各行各业正朝着数字化方向转型&#xff0c;利用数字化转型方法论和前沿科学技术实现降本、提质、增效&#xff0c;从而提升竞争力。 数字化转型是一项长期工作&#xff0c;包含的要素非常丰富&#xff0c;如数字化转型顶层设计、…