- 博客(111)
- 收藏
- 关注
原创 C# 委托
委托是函数指针的升级版一切皆地址变量(数据)是以某个地址为起点的一段内存中所存储的值函数(算法)是以某个地址为起点的一段内存中所存储的一组机器语言的指令直接调用与间接调用直接调用:通过函数名来调用函数,CPU通过函数名直接获得函数所在地址并开始执行->返回间接调用:通过函数指针来调用函数,CPU通过读取函数指针存储的值获得函数所在地址并开始执行->返回委托的简单使用Action委托Func委托class Test//直接调用//间接调用action();
2024-08-18 17:52:39
422
原创 C# 介绍
只需将值视为object,即可将引用类型的值视为对象,通过执行装箱或取消装箱操作,值类型的值被视为对象。typeof帮助我们查看一个类型的内部结构,类型的内部结构术语叫Metadata,里面包含这个类型的基本信息,比如:什么名字、属于的名词空间、父类、包含的方法和属性。借助类,两个变量可以引用同一个对象,对一个变量执行的运算可能会影响另一个变量引用的对象;属性是一种用于访问对象或类型的特征的成员,特征反映了状态。x as T:类型转换,返回类型为T的x,如果x的类型不是T,则返回null。
2024-07-29 11:16:05
1562
原创 31 - 买股票的最佳时机问题
1. 买股票的最佳时机I2. 买股票的最佳时机II3. 最佳买卖股票时机4. 买股票的最佳时机III5. 买股票的最佳时机IV
2023-05-09 16:13:05
863
原创 30 - 兑换零钱
本题求钱币最小个数,那么钱币有顺序和没有顺序都可以,都不影响钱币的最小个数。所以外层for循环遍历物品,内层for遍历背包或者外层for遍历背包,内层for循环遍历物品都是可以的!不能先遍历背包再遍历物品,如果物品在前,物品只遍历了一轮;而物品在后,物品会遍历多轮,,如下表所示为先遍历背包再遍历物品的结果。
2023-05-09 09:53:39
248
原创 28 - 最长公共子序列
这道题是最终要返回该序列而不是长度,相比于上一题,在构造表的同时要以另一个二维矩阵记录上面状态转移时选择的方向,我们用1表示来自左上方,2表示来自上边,3表示来自左边。获取这个序列的时候,根据从最后一位开始,根据记录的方向,不断递归往前组装字符,,因为这种情况是动态规划中两个字符相等的情况,字符相等才可用。动态规划:dp数组初始化为0,递推公式为。
2023-05-08 09:56:47
205
原创 24 - LRU缓存
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。示例。
2023-04-10 15:28:29
99
原创 22 - 二叉树(四)
我们可以用哈希表存储所有节点的父节点,然后我们就可以利用节点的父节点信息从 p 结点开始不断往上跳,并记录已经访问过的节点,再从 q 节点开始不断往上跳,如果碰到已经访问过的节点,那么这个节点就是我们要找的最近公共祖先。可以直接利用二叉搜索树的性质,从根节点开始访问,访问到节点的值在p和q之间则是最近公共祖先。时间复杂度O(n),空间复杂度O(n)时间复杂度O(n),空间复杂度O(n)
2023-03-27 15:41:25
527
原创 19 - 爬楼梯问题
同样地当前状态依赖的是前三个状态,可以用递归/动态规划,因为递归会重复计算,所以使用动态规划,就不难写出如下代码。如果这道题目改成可以爬1或2或3个台阶,问有多少种不同的方法可以爬到楼顶?这道题其实都是当前状态依赖前两个状态,可以做空间上的优化。这道题和斐波那契数列一样,使用动态规划来解决。时间复杂度O(n),空间复杂度O(n)时间复杂度O(n),空间复杂度O(1)时间复杂度O(n),空间复杂度O(n)时间复杂度O(n),空间复杂度O(1)进阶:打印经过的路径。
2023-03-23 15:41:46
104
原创 17 -删除有序链表中的重复元素
由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。由于链表的头节点可能会被删除,因此我们需要额外使用一个节点(newHead)指向链表的头节点。具体地,我们让指针 cur 指向链表的newHead来添加节点,对链表head进行遍历。需要注意head和head->next可能为空的处理。时间复杂度O(n),空间复杂度O(1)
2023-03-22 15:38:25
782
原创 16 - 单链表排序&链表相加
上述过程可以通过递归实现。递归的终止条件是链表的节点个数小于或等于 1,即当链表为空或者链表只包含 1 个节点时,不需要对链表进行拆分和排序。使用辅助数组,时间复杂度O(nlogn),空间复杂度O(n)时间复杂度O(nlogn),空间复杂度O(1)
2023-03-22 10:45:09
244
原创 15 - 模拟栈&队列
思路:按照上面的思路,我们只需要设计一个数据结构,使得每个元素与其相应的最大值时刻保持一一对应。因此我们可以使用一个辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最大值。时间复杂度O(1),空间复杂度O(n)
2023-03-21 19:07:53
82
原创 14 - 牛牛吃草
简单dp,dp[i]表示当前在i位置的最大值。注意答案不是dp[n],因为最大的情况不一定可以走到n这个位置。时间复杂度O(n^2)
2023-03-21 15:51:54
113
原创 13 - 岛屿问题
岛屿问题1. 岛屿的周长2. 岛屿的数量3. 岛屿的最大面积我们所熟悉的 DFS(深度优先搜索)问题通常是在树或者图结构上进行的。而这篇博客的这三道题是在「网格」结构中进行的DFS。
2023-03-20 11:27:39
238
原创 10 - 二叉树(一)
深度优先搜索&BST1. 验证二叉搜索树2. 将有序数组转为二叉搜索树3. 有序链表转为二叉搜索树4. 将二叉搜索树变平衡
2023-03-15 15:53:00
228
原创 8-重排链表 & 链表奇偶重排&判断链表是否为回文
1. 重排链表方法一:数组模拟方法二:双向队列模拟方法三:直接分割链表2. 链表的奇偶重排方法一:利用辅助数组方法二:双指针3. 判断一个链表是否为回文结构
2023-03-13 11:06:37
390
原创 sql学习一
一、if 语句二、去重问题三、concat,upper,lower四、group_concat五、like 模糊匹配六、union和union all七、流程控制语句case八、limit
2023-02-27 21:46:46
391
原创 MySQL 读写分离配置实践
一、环境准备1. 查看主从复制状态2. 查看JDK版本3. 打开root的远程连接权限4. 安装MyCat二、配置文件1. server.xml2. schema.xml三、启动服务1. 配置文件问题一2. 配置文件问题二四、MyCat 9066端口和8066端口1. 9066管理端口2. 8066数据端口五、验证读写分离1. 打开查询日志general_log2. 验证读操作在slave3. 验证写操作在master4. 验证容灾功能...
2022-07-14 16:57:18
1718
1
原创 MySQL 配置主从复制实践
一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog的日志文件名和position三、slave配置1. 配置全局唯一的server-id2. 使用master创建的账户读取binlog同步数据3. 开启slave服务四、配置中可能出现的问题1. 网络连接问题2. binlog的position问题3. SQL线程出错...
2022-07-07 17:24:20
797
原创 MySQL SQL的完整处理流程
mysql client和 mysql server进行通信的时候,如果走完所有的MySQL Server模块,需要依次经过连接器、解析器、优化器、执行器、存储引擎
2022-07-06 10:37:42
489
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人