03 2021 档案
摘要:deque概述 deque是一种双向开口的“连续”线性空间(即可以在头尾两端分别做元素的插入和删除操作)。 deque与vector的差别: deque允许在常数时间内对头端进行元素的插入和删除操作,vector尾部插入和删除常数时间,头部操作O(n)时间 deque没有容量概念,不需要和vecto
阅读全文
摘要:leetcode 173. 二叉搜索树迭代器:实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器。
阅读全文
摘要:给定一个二叉树的根节点 root ,返回它的 中序 遍历。使用递归、迭代、染色(迭代的另一种方法)三种方法实现。
阅读全文
摘要:解决MemoryError: Cannot allocate write+execute memory for ffi.callback() 问题
阅读全文
摘要:array底层就是一个定长数组,给定长数组加上迭代器相关的东西,就可以让他像一个容器,符合容器的性质。 #define _NOEXCEPT noexcept template<class _Tp, size_t _Size> struct array { // types: typedef _Tp
阅读全文
摘要:二叉树的通用中序遍历方法(迭代): 思路来源:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/solution/yan-se-biao-ji-fa-yi-chong-tong-yong-qie-jian-ming/ /**
阅读全文
摘要:之前写了这样一段代码, printf("%d | %d \n", sizeof(std::list<int>), sizeof(std::list<long long>)); /* 24 | 24 */ 首先我们需要知道list是个什么东东: 点进std::list,可以看到以下代码,可以看出lis
阅读全文
摘要:list概述 list底层为非连续区间,即链表(实质上是一个双向循环链表) list每次插入或者删除一个元素,就配置和释放一个元素空间,对于任何位置的原属插入或原属移除,list永远为常数时间。 list的节点 首先要知道,list本身和list的节点是不同的,如果我们声明一个list,里面放了10
阅读全文
摘要:vector概述 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。 vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率,即“
阅读全文
摘要:1 C++ 内存配置操作和释放操作 class FOO{}; FOO *pf = new FOO; delete pf; 对于上述代码,其在底层执行内容为: line 2:new操作,首先调用operator new分配内存 (2)调用FooFoo() 构造对象内容; operator new底层调
阅读全文
摘要:const修饰的变量,它的值不能被改变。只能执行不改变其内容的操作。const修饰的变量一样能进行算数运算等操作。 const int bufSize = 512; 如果对其进行修改,则会引发错误。 bufSize = 1024; //error const对象必须初始化 const修饰不具有传递性
阅读全文
摘要:实现一个操作符重载的方式通常有两种情况: 将操作符重载实现为类的成员函数。 操作符重载实现为非类的成员函数(即全局函数)。 将操作符重载实现为类的成员函数 在类体中声明(定义)需要重载的操作符,声明方式跟普通的成员函数一样,只不过操作符重载函数的名字是“关键字operator +以及紧跟其后的一个C
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/sort-list/ 就是对一个链表进行排序。。 我采取得快排的思路,提交超过5%。。。看list标准库是用归并排序实现的,过几天改下的,现在先把链表快排的思路放上: 选择target(即基础点,左边的元素都小于target
阅读全文
摘要:题目内容: 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/number-of-islands/ 思路:其实就相当于找这个图的连通分量数目,可以dfs,bfs和并查集,下面给出并查集的解法。 有个小技巧:只需要向右和向下两个方向合并就好了,因为左和上两个方向属于重复边。 下次再做这题
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/baby-names-lcci/ 分析题意可以知道这是个并查集,新增一个size数目来维护集合数量大小就可以了(size数组只有当是父节点时才有意义) 思路:将synonyms中的相同的名字合并即可,但是names的处理就比
阅读全文
摘要:题目可见:https://leetcode-cn.com/problems/number-of-provinces/ 很明显是一个并查集,上模版即可: class Solution { public: int findCircleNum(vector<vector<int>>& isConnecte
阅读全文
摘要:类型别名 类型别名是一个名字,是某种类型的同义词。使用类型别名可以使复杂的类型名字变得简单明了。 typedef double wages; typedef wages base, *p; //base=double,p=double* C++11中支持新方法: using wages = doub
阅读全文
摘要:引用 引用(reference)为对象起了另外一个名字,引用类型引用(refers to)另外一种类型。通过将声明符写成**&d的形式来定义引用类型型,其中d**是声明的变量名。在初始化变量时,会出现初始值拷贝现象,定义引用则将引用与初始值对象绑定在一起。 引用必须初始化(类型必须严格匹配) 引用并
阅读全文
摘要:2 STL的编程范式 OOP(Object-Oriented Programming):面向对象 数据和操作在同一个类;OOP企图将datas和methods关联在一起 template<class T, class Alloc = alloc> class list{ ... void sort(
阅读全文
摘要:vector resize reserve比较 size:Returns the number of elements in the vector 目前存在的元素数。即: 元素个数 capacity:Return size of allocated storage capacity 容器能存储数据的
阅读全文