- 博客(19)
- 收藏
- 关注
原创 SGISTL源码-容器 笔记
本文是在阅读SGI STL v3.3源码中,遇到的一些问题及有意思的点。本文建立在已经观看过侯捷老师STL源码剖析课程的基础上。是在阅读源码过程中,对其中的内容进行补充、修饰。
2022-07-04 10:35:08 430
原创 [剑指 Offer 03. 数组中重复的数字] 模拟哈希表解法
剑指 Offer 03. 数组中重复的数字模拟哈希表解法。题目描述找出数组中重复的数字。在一个长度为 n (2 <= n <= 100000)的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。样例输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3思路我们知道长度为n,角标即为[0,n−1]\left[0,n-1\right][0,n−1]。而数
2022-05-13 13:24:41 274
原创 new-delete与malloc-free
本文主要根据候捷《面向对象高级开发》课程,分析一下malloc/free 与 new/delete的异同。以及delete/delete[]的异同。以便大家更好的理解和掌握相应的知识点new && delete二者对于基本数据类型的操作基本没有差异,而当为类的对象分配空间时,会有一些区别。以下是候捷老师课程中关于malloc/new区别的代码以更好的区分二者。假设我们现在已经有一个复数类,当我们用new进行分配时,首先自动获取对象所占空间,执行operator new,在其内部调用
2022-05-06 14:44:08 253
原创 复数类(Class Complex)c++的简单实现
本文主要根据候捷《面向对象高级开发》课程实现的一个复数类。所涉及的功能有 加减乘(除法我高中没学过)、以及对应的+=、-=、*=。还有取模、取反、求共轭复数、判断是否相同、输出等。代码将分模块的进行讲述,不想看可以直接滑到文末。文末会给出完整代码。初始化首先,实现的是类的初始化及对其数据成员的访问。由于访问数据成员并不会修改其相应的值,可以设置为常函数。class Complex {public: Complex(double x, double y) : re(x), im(y){}
2022-05-05 18:53:20 3816
原创 B树基本原理及搜索
B树AVL 树 和红黑树,都假设所有的数据放在主存当中。而当数据量达到亿级,主存当中根本存储不下,我们只能以块的形式从磁盘读取数据,与主存的访问时间相比,磁盘的 I/O 操作相当耗时,而提出 B-树的主要目的就是减少磁盘的 I/O 操作。B树的一个节点xxx如果包含nnn个keykeykey,则其有n+1n+1n+1个孩子。(nnn个key将其余数据划分为n+1n+1n+1个区间,每个孩子介于相应的区间中)性质B树所具有的的性质人如下:每个节点xxx应具有如下属性:x.nx.nx.n即,存储
2022-04-03 14:55:54 424
原创 动态规划详解
虽然,Carl的《代码随想录》和labuladong的《算法小抄》对“动态规划”类问题有着详尽且优质的解答,但仍然想在这里简单啰嗦一下动态规划。在这里,并不想以《算法导论》中较为晦涩且难懂的「矩阵连乘」、「最优二叉搜索树」等为样例进行讲解。定义动态规划,英文名:Dynamic Programming,简称DP。其算法的基本思想是:将待求解的问题分解成若干个子问题,先求解子问题,再由子问题的解得到原问题的解。换句话说,将一个复杂的问题,分解为多个相互联系的较为简单的子问题,对每个子问题进行求解,复杂问题的
2022-01-13 19:47:00 1782
原创 红黑树的定义/旋转/插入/删除
引入由于二叉搜索树很不平衡,很容易退化为一条类似链表的结构,从而造成时间复杂度从O(lgN)O(lgN)O(lgN)降低为O(N)O(N)O(N)。为解决这一问题,引入了**“平衡”二叉搜索树**,红黑树就是其中的一种。红黑树在树的基础上,为每个节点增加了一个颜色位,可以是RED,也可以是BLACK。通过对每条路径的颜色进行约束,保证红黑树处于近似平衡的状态,从而保证了查找最坏情况为O(lgN)O(lgN)O(lgN)。特性红黑树除了本身是二叉搜索树外,还满足以下条件:每个节点要么是红色的,要
2022-01-11 22:15:23 254
原创 多叉树的二叉树表示法(左儿子右兄弟)
在二叉树的基础上,我们可以扩展出任意多个叉的树。即,多叉树。然而,此时又面临着另外一个问题:当孩子结点无限制时,我们并不知道预先要分配多少个属性,且当仅有少数元素拥有多个子节点时,将会造成大量的空间浪费。此时,提出了一种新的表示形式:left−childright−siblingrepresentationleft-child \quad right-sibling \quad representationleft−childright−siblingrepresentation。左孩子右兄弟
2022-01-05 08:29:46 4710 1
原创 LeetCode121题
LeetCode121. 买卖股票的最佳时机思路此题所求为price数组中,price[j]-price[i]在j>i时的最大值,最直接思路为二重循环,但某样例元素过多时间超限。考虑采用动态规划求解:读取到某一个元素时,记录此之前的最低价(买入的最佳时机)。随着时间的推移,每天的最大利润在 前一天最大利润和当前价格和最低值的差中取。即:转移方程dp[i]=max(dp[i−1],price[i]−mindp[i]=max(dp[i-1],price[i]-mindp[i]=max(dp[i−1
2021-11-07 21:39:55 367 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人