自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 LeetCode 76.最小覆盖子串,两个vector解法

一个vector记录 t 中字符的个数,一个用来判断是不是 t 中的字符。'A'到'z'的范围长度是58,但是为了避免一直ch-'A'计算下标,直接设置了125,空间换了点时间,大概。(每次遇到单个字符存储都不想用哈希表)

2024-09-03 21:48:59 395

原创 C++面试问题

(shared_ptr, unique_ptr,weak_ptr)make_shared与显式通过构造函数初始化 (new)的shared_ptr区别?C++中vector的push_back和 emplace_back的区别。vector 的 的 resize 和 和 reserve 操作的 区别。成员初始化列表的概念,为什么用成员初 始化列表会快一些(性能优势)?sizeof 计算的是 对象类型/类型 在栈中分配的内存大小。必须在类的构造函数初始化列表里进行初 始化的数据成员有哪些?

2024-09-03 16:01:26 1022

原创 C++ STL 知识点总结,练气期圆满

C++的STL介绍C++ STL从广义来讲包括了三类:算法,容器和迭代器。算法包括排序,复制等常用算法,以及不同容器特定的算法。容器包括序列式容器和关联式容器,及list,vector等, set,map等。迭代器就是在不暴露容器内部结构的情况下对容器的遍历。容器优缺点Vector 的就是数组:优点:内存和 C 完全兼容、高效随机访问、节省空间缺点:插入删除元素代价巨大、超过自身容量需要申请大量内存做大量(2倍)拷贝。List 的数据结构模型是链表。

2024-08-06 18:47:41 711 1

原创 C++语法知识点整理,练气期。

定义和声明的区别定义分配空间,声明不分配空间的异同点union默认public,可以包含构造析构,不能包含虚函数和静态变量。struct默认public,可以包含构造析构,可以包含虚函数和静态变量。class默认private,可以包含构造析构,可以包含虚函数和静态变量,可以定义模板。深拷贝和浅拷贝浅拷贝:增加一个指针指向原先的内存,容易重复释放资源。深拷贝:增加一个指针指向新开辟的内存,可以避免重复释放资源。new和malloc的区别。

2024-08-05 12:39:56 2301

原创 ffmpeg + sdl 视频播放器,支持暂停,倍速,快进快退等操作

ffmpeg+sdl播放器,支持暂停,倍速,快进快退等操作。解决倍速时音频频率过高出现的电音问题。解决快进快退出现的花屏问题。

2024-08-03 15:15:00 314

原创 av_read_frame阻塞的问题,设置超时的坑

在一般情况下,ret = av_read_frame(ifmt_ctx_, &pkt);返回值为0表示成功,在读取错误或者读取到文件末尾的时候会返回

2024-07-26 23:16:27 747 2

原创 C++面向对象:封装和继承

封装是一种将数据和方法绑定在一起,隐藏内部实现细节的一种技术。封装通过private, protected, public实现访问权限控制,使对象内部的数据只能通过特定的接口进行访问和修改,从而增强代码的安全性和可维护性。

2024-07-20 12:26:55 706

原创 LeetCode 3.无重复字符的最长子串,不用哈希,速度却直接起飞?

耗时10ms以内,运气好可以达到0ms,消耗内存8.82MB。

2024-07-02 18:18:14 625

原创 LeetCode 134加油站,是环路,但我不绕圈,秒了。C++

比如出发点为0,无法走到下标为4的点,那么从0-4之间的任何一个点作为出发点,都不可能到达4,因为0经过1-3这些点时会有燃油余量,说明在这个区间,从0出发已经是最好的选择了。而且只要gas总和大于或者等于cost总和就一定有解,因为前面缺少的油,后面一定会多出一部分。当i==n的时候,就说明从出发点可以达到最后一个加油站,直接跳出循环。不需要看能不能回到出发点,因为出发点之前的点都不行,出发点又是剩下的这些点里面的最优解。不绕圈是指,不需要看能不能转一圈回到起始点,只需要看能不能到达最后一个元素就行。

2024-06-22 15:57:20 348 1

原创 C++ 面向对象特性:多态、虚表、多继承

多态包括两种,静态多态和动态多态。函数重载和运算符重载,对函数名的复用,在编译阶段确定函数地址。由派生类和虚函数实现运行时多态,在运行阶段确定函数地址。多态可以让同名函数,因为函数指向的对象不同,而调用该对象中该名称的函数。在动态多态中,操作系统给构成多态的每个类增加了一个虚函数表,表中存放virtual关键词用来修饰虚函数的首地址。编译器运行时通过首地址去调用对应的函数,以此形成多态。

2024-06-21 00:08:18 1148 1

原创 LeetCode 274 H指数,两步秒了。C++

因为如果引用量小于剩余论文的数量,那h值肯定就是由剩余的论文来决定的,h值要么就是继续在剩余论文中找,要么就是剩余论文的数量。相当于变成了只剩下后面部分的一道新题。从0开始遍历,如果引用量大于或等于剩余论文的数量,直接返回剩余论文的数量,秒杀。首先,通过题目可以知道,h值的不可能大于数组的长度n。第一步,对数组进行排序,从小到大。

2024-06-20 18:34:03 326 1

原创 LeetCode 45跳跃游戏|| 更新最大距离 C++

每次递增,判断并更新max_dist,如果i==end,说明下一步能跳的点已经遍历完了,需要进行跳跃,steps++,跳完之后end = max_dist。此时如果end>=n-1,说明已经可以跳到最后应该元素了,跳出循环,最后返回steps。从0位置开始遍历,endt为下一步可以跳到的最远元素下标,max_dist为i到end范围内的点可以跳到的最远元素下标。题目已经保证可以到达nums[n-1],首先解决特殊情况,当n

2024-06-20 18:19:23 175

原创 LeetCode 55题跳跃游戏,经典双刀流快慢刀,秒了。C++

从后往前遍历,fast直接从n-3开始,slow直接从n-2开始,因为最后一个元素即使为0也不影响结果。如果nums[slow]!= 0说明肯定能通过slow这个点,slow--,fast--。1、如果nums[fast] - nums[slow] > slow - fast,说明能通过slow这个点,slow更新位置为fast的前一个位置,fast向前跳两个位置。2、nums[fast] - nums[slow]

2024-06-19 17:44:33 325 1

原创 LeetCode第121,122题买卖股票,今典双刀流快慢刀,秒了。C++

当 fast 价格比 fast-1 价格高,继续持有股票,更新最大利润max_profit,fast++;当 fast 比 fast-1 价格低,说明要卖了再买,跟新slow到fast位置,累加总利润sum_profit,最大利润置为0,fast++;当 fast 比 slow 价格低,跟新slow到fast位置,fast++;最后返回最大利润max_profit。跟上一道题不一样的是,要将fast价格和fast-1价格相比较,而不是和slow相比较,因为一旦有价格降低的情况出现,就应该进行新一轮的买卖。

2024-06-19 17:24:40 256

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除