算法~本质

ops/2024/9/22 21:36:23/

仅做一些笔记

数据结构分为数组和链表,数据结构的目的是提升增删改查的效率。算法的本质是基于这两种数据结构进行高效穷举。(1.如何穷举?--递归/dp。2.如何聪明地穷举?--并查集/贪心/KMP)

单链表--双指针

数组--二分搜索/双指针/滑动窗口/前缀+差分

二叉树系列(回溯算法+动态规划)

eg.求二叉树最大深度

1.回溯算法

class Solution {
public:// 记录最大深度int res = 0;int depth = 0;// 主函数int maxDepth(TreeNode* root) {traverse(root);return res;}// 二叉树遍历框架void traverse(TreeNode* root) {if (root == NULL) {// 到达叶子节点res = max(res, depth);return;}// 前序遍历位置depth++;traverse(root->left);traverse(root->right);// 后序遍历位置depth--;}
};

2.分解问题计算答案

// 定义:输入根节点,返回这棵二叉树的最大深度
int maxDepth(TreeNode* root) {if (root == nullptr) {return 0;}// 递归计算左右子树的最大深度int leftMax = maxDepth(root->left);int rightMax = maxDepth(root->right);// 整棵树的最大深度int res = max(leftMax, rightMax) + 1;return res;
}

eg.二叉树前缀遍历

1.回溯算法

vector<int> res;// 返回前序遍历结果
vector<int> preorder(TreeNode* root) {traverse(root);return res;
}// 二叉树遍历函数
void traverse(TreeNode* root) {if (root == nullptr) {return;}// 前序遍历位置res.push_back(root->val);traverse(root->left);traverse(root->right);
}

2. 分解问题计算答案

// 定义:输入一棵二叉树的根节点,返回这棵树的前序遍历结果
vector<int> preorder(TreeNode* root) {vector<int> res;if (root == NULL) {return res;}// 前序遍历的结果,root->val 在第一个res.push_back(root->val);// 后面接着左子树的前序遍历结果vector<int> left = preorder(root->left);// 最后接着右子树的前序遍历结果vector<int> right = preorder(root->right);res.insert(res.end(), left.begin(), left.end());res.insert(res.end(), right.begin(), right.end());return res;
}

引用:我的刷题心得:算法的本质 | labuladong 的算法笔记


http://www.ppmy.cn/ops/26095.html

相关文章

分享一份物联网 SAAS 平台架构设计

一、架构图**** 二、Nginx**** 用于做服务的反向代理。 三、网关**** PaaS平台所有服务统一入口&#xff0c;包含token鉴权功能。 四、开放平台**** 对第三方平台开放的服务入口。 五、MQTT**** MQTT用于设备消息通信、内部服务消息通信。 六、Netty**** Socket通信设…

Windows操作系统安全精讲视频课程

Windows操作系统安全精讲视频课程 1.1IT运维职位需要学习的技能.mp4 1-2利用缓存的网络凭据入侵服务器.mp4 1-3信息安全包括哪些方面.mp4 1-4管理本地用户账户和组.mp4 1-5创建检查删除计算机上隐藏的账户.mp4 1-6用户账户控制&#xff08;UAC&#xff09;详解.mp4 1-7使用win…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-9.1-LED灯(模仿STM32驱动开发实验)

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

搭建基础镜像(centos+jdk)

搭建基础镜像&#xff08;centosjdk&#xff09; 1. 目录结构1.1 应用目录2.2 镜像目录 2. 编写Dockerfile2.1 设置工作目录2.2 解决时间同步问题&#xff08;设置时区&#xff09;2.3 核心逻辑2.4 设置环境变量 3. 构建镜像3.1 构建镜像3.2 导出镜像 1. 目录结构 1.1 应用目录…

触发器的查看和删除

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 如果想查看当前所有的触发器信息&#xff0c;可以使用数据字典 user_triggers&#xff0c;这个数据字典有很多字段可以查看所有触发器的名称、类型、表名、拥有者等信息。 …

Python 与 TensorFlow2 生成式 AI(三)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第七章&#xff1a;使用 GAN 进行风格转移 神经网络在涉及分析和语言技能的各种任务中正在取得进步。创造力是人类一直占有优势的领域&…

uniapp小程序订阅通知

服务 开通订阅服务 const tmplIds ref([tsdasdadasdfgdrtwexQHdEsjZV])//换成自己的 function confirm(){uni.requestSubscribeMessage({tmplIds: tmplIds.value,success: (res) > {// console.log(res)let auth_notice res[tmplIds.value[0]] accept ? 1 : 2 //1是接…

详解centos8 搭建使用Tor 创建匿名服务和匿名网站(.onion)

1 Tor运行原理&#xff1a; 请求方需要使用&#xff1a;洋葱浏览器&#xff08;Tor Browser&#xff09;或者Google浏览器来对暗&#xff0c;网网站进行访问 响应放需要使用&#xff1a;Tor协议的的Hidden_service 2 好戏来了 搭建步骤&#xff1a; 1.更新yum源 rpm -Uvh h…