- 博客(23)
- 收藏
- 关注
原创 【动态规划问题(2)】路径问题
也就是说我们需要知道小的正整数对应的最大乘积,才能递推得到大的数对应的最大乘积,进而递推得到目标dp[n]。因为后续的状态转移方程需要节点上边的元素和节点左边的元素,而第0行和第0列是边界,如果在边界运用状态转移方程会越界。)时,依次将1到n作为根节点,计算出各个节点作为根的时候的搜索树的个数,再将这些二叉搜索树加起来即为dp[n]。当固定的第一个数 j 等于 i - 1 时,另一个数 i - j 就是 1了,但是在开头的时候 j 已经取过了1,另一个数去过了 i - 1,这样是不是造成了重复计算。
2024-09-06 11:16:05
1361
原创 【递归、回溯专题(三)】记忆化搜索题集
记忆化搜索:在递归过程中遇到一些完全相同的问题,将完全相同的问题记录在备忘录中,等到下一次遇到了相同的问题直接去备忘录取值,无需再进行深度优先遍历。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。F(n) = F(n - 1) + F(n - 2),其中 n > 1。解释:F(2) = F(1) + F(0) = 1 + 0 = 1。解释:F(3) = F(2) + F(1) = 1 + 1 = 2。解释:F(4) = F(3) + F(2) = 2 + 1 = 3。
2024-09-03 21:58:36
848
原创 【递归、回溯专题(二)】DFS解决floodfill算法
从二维数组的边界开始搜索,当后面的节点的值 >= 当前节点的值就往后面搜索。搜索完之后两个vis数组都有从边界搜索到达的最远位置被标记,找到两个vis数组公共位置都被标记为true的即为既可流向太平洋也可流向大西洋。以一个元素为例,如图元素5的dfs过程中:用一个vis数组记录使用过的节点,并且dfs只能往节点值较低的或者相等的去搜。dfs负责将陆地1周围的连通区域(上下左右是1的区域)标记为true,当周围遇到了海洋0,dfs终止。此时,在函数外侧则去统计岛屿的数目(区域是1,并且区域未被标记)。
2024-09-01 09:39:40
914
原创 二叉树的深搜与回溯
当path为局部变量时,且函数形参为值传递,由于当前栈帧的path和下一层栈帧的path是拷贝的关系,互不影响,那么下一层栈帧结束返回后就回到了原来状态的path。如图:在递归的过程中,每次递归传入上一次的前缀和与下一个要进入递归的节点,该递归的返回值是当前节点的左右两边返回来的数字之和。这题就是经典的回溯思想的题目,弄清楚回溯的过程以及回溯要还原为原来的状态,这样我们以后碰到了回溯会发现并不难。算法原理:二叉搜索树的中序遍历的结果,最终是一个有序的序列。算法原理:中序遍历+全局变量计数。
2024-08-21 21:04:45
637
原创 【递归专题一】Pow(x,n)-快速幂算法
解法一:暴力循环如2则用10个2相乘,但是如果n=2,难道我们还要用n=2个2相乘吗?这样显然会超时。
2024-08-21 11:12:04
240
原创 【Linux网络(一)】Socket编程
本文讲解socket编程的基础内容,包括如何搭建udp和tcp服务器及其客户端,最后介绍如何将服务守护进程化
2024-08-14 21:26:05
1228
原创 MySQL-数据库的操作
2,数据库校验集:以正确的格式读取数据库中的数据,并对数据库进行字段比较的编码,本质也是一种读取数据库中的数据采用的编码格式。database内部看不到对应的数据库;对应的数据库文件夹被删除,级联删除,里面的数据表全部被删,所以不要随意删除数据库!如果是对表中的数据进行排序,'a’和’A’大小不做区分。因此比较读取表中的字符’a’会连同’A’一起显示出来。1,数据库编码集:数据库存储数据使用的编码集。第一个样例:使用校验规则为。第二个样例:使用校验规则为。
2024-07-27 15:45:43
861
原创 一文带你了解什么是MySQL数据库
mysql是数据库服务的客户端,mysqld是数据库服务的服务器端,mysql是基于CS模式的一种网络服务。mysql是一套给我们提供数据存储的服务的网络程序。数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据,它是将来在磁盘上存储的一套数据库方案。数据库服务特指的就是mysqld。
2024-07-27 11:45:48
1108
原创 Centos7下MySQL的环境卸载、安装和登录
重新登陆MySQL,发现还是不行,这是因为配置文件在MySQL服务器启动的时候才加载,而我们的MySQL服务器之前已经启动过了。配置服务端的端口号(默认3306),配置字符编码格式,配置存储引擎为InnoDB。MariaDB本质上就是MySQL,MariaDB是MySQL的一个分支。安装好之后我们的本地yum源仓库就有了mysql yum源。更新本地机器的yum源仓库,让它具有mysql的yum源.发现并没有mysql的yum源,如果我们直接安装会失败!,它是上一个mysql残余的数据,建议备份!
2024-07-14 15:14:59
1206
1
原创 【递归】两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2024-06-01 11:34:17
886
原创 递归+迭代实现合并两个有序链表
将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 – 告诉我们不能重新new节点。
2024-06-01 10:35:44
401
原创 leetcode108.将有序数组转换为二叉搜索树(递归+迭代)
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵平衡二叉搜索树。
2024-05-16 12:38:44
378
原创 leetcode669.修剪二叉搜索树(递归+迭代)
思路:误区:如下代码是错误解法之前做过删除二叉搜索树中的节点这题之后,我们很容易能写出一个节点被删除,要将连接到要删除节点的父节点,这样我们就遗漏了后面要删除的节点,如下图。所以我们要在子树中继续去找,将整棵树的问题转化为子树的子问题,它们的操作逻辑是一样的。具体递归展开如下图:从递归最深的节点开始向上回溯,2的左和2的右都接收到返回值之后,就意味着1的删除;然后2将它自己返回作为3的左的接收值,3的右接受空;再然后3将自己返回作为8的左的接收值,这意味着0的删除;右子树的逻辑也如此…正确解法:
2024-05-15 21:11:57
638
1
原创 leetcode450.删除二叉搜索树中的节点(递归+迭代法)C++实现
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:1. 首先找到需要删除的节点;2. 如果找到了,删除它。
2024-05-13 22:49:38
1802
原创 leetcode236.C++解决二叉树的最近公共祖先
这道题目我给出两种写法:运用后序遍历的回溯过程,如果找到了我想要的节点就像上层返回该节点,没有找到就返回空。首先可以观察到如果一个节点在root的左子树,另一个在右子树,root就是公共祖先;如果两个都在root的左(右)子树,则公共祖先是其中一颗子树返回的节点。解题步骤见下图:针对于上图中第三种特殊情况,我们不用关心p节点是否能找到,因为递归到了q就会向上返回,并且q就是我们要的最近公共祖先。下面给出了C++实例代码:复杂度分析:时间复杂度 O(N) : 其中 N 为二叉
2024-05-10 11:09:53
633
1
原创 [C语言]数据是如何存储的(整型篇)?(一)
大端存储:是指数据的低位存储在内存高地址,数据的高位存储在内存低地址;小端存储:是指数据的低位存储在内存低地址,数据的高位存储在内存高地址。以下以0x11223344的存储为例,来探讨大小端是如何存储的:我们很好的发现:小端存储是把一个数据的低位存放在低地址,高位存放在高地址;大端存储是把一个数据的低位存放在高地址,高位存放在低地址。不同的编译器存储模式是不一样的。我们常用的X86结构是小端存储,运用于嵌入式开发的KEIL C51则是大端存储。很多的ARM, DSP都为小端存储。
2023-06-14 20:54:49
421
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅