- 博客(73)
- 收藏
- 关注
原创 数据结构之deque双端队列
下标随机访问,效率不错,但是跟vector有差距中间插入删除,效率差头插、头删、尾插、尾删效率很不错。所以在容器适配的选择上,什么情况选择deque呢,在头插、头删、尾插、尾删比较多的情况下,可以选择deque。但是如果对中间位置访问比较多,比如优先级队列(本质是堆),就不能选择deque,应该选择vector(性能上差很多!
2024-03-09 12:09:46 535 7
原创 string类的模拟实现
注意这里必须要使用引用返回!!!引用有两大作用:1、减少拷贝2、修改返回值这里我们想要 [] 来修改字符串的值,返回值不用引用,就无法实现修改,因此引用在某些特定条件下不可替代!!!这里有两种 [ ] 实现方式,第一种就是普通版本,第二种就是const版本(只准读)。注意:const修饰迭代器,迭代器本身可以修改,但是指向的内容不能修改。
2024-02-29 14:59:11 886 1
原创 C++模板
在我们学习C语言时,交换两个数,需要手撕一个交换函数,如果需要交换的几对数据还是不同的数据类型,那么我们就需要手撕很多种类型的swap函数,这样就造成了代码的冗余。因此,我们C++的祖师爷就新引入了 模板 这个语法,也就是我们的泛型编程。
2024-02-16 17:41:51 355 7
原创 算法讲解之哈希表
通过以下几个问题来解释~1、哈希表是什么?存储数据的容器。2、有什么用?“快速”查找某个元素。时间复杂度O(1) 空间复杂度O(N)3、什么时候使用哈希表频繁的查找某个数时。4、怎么用哈希表第一种就是直接使用哈希表的容器。第二种利用数组实现(在数据范围很小的情况下,比如字符)下面就开始实战!
2024-02-15 10:14:42 497 6
原创 三路快排解决TopK问题
topk问题一般分为两大类:第一大类就是找最大/最小的第k个元素,这一类只需要找一个元素即可。第二大类就是最大/最小的k个元素,这一类是找一串数字。在有上面的知识后,我们先解决第一类问题如何找第k个元素。
2024-02-03 11:33:20 773 11
原创 C++内存管理
1.栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下)3.堆用于程序运行时动态内存分配,堆是可以上增长的。4. 数据段--存储全局数据和静态数据。5. 代码段--可执行的代码/只读常量。
2024-01-30 18:52:55 1047 37
原创 力扣【四数之和】
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。
2024-01-21 21:26:21 747 18
原创 盛最多水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。
2024-01-21 21:23:01 377
原创 算法精讲之【二分】
基准值的寻找是不确定的,有可能是题目直接给的值,也有可能是mid前一个数,或者后一个数,或者是数组的最后一个元素,甚至可以是数组自身的下标!
2024-01-18 20:03:29 333
原创 LCR 173. 点名(二分)
某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组records。假定仅有一位同学缺席,请返回他的学号。47。
2024-01-17 17:58:26 787 3
原创 寻找旋转排序数组中的最小值
已知一个长度为n的数组,预先按照升序排列,经由1到n次后,得到输入数组。例如,原数组47注意,数组的结果为数组。给你一个元素值的数组nums,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须设计一个时间复杂度为O(log n)的算法解决此问题。
2024-01-17 17:44:18 388
原创 寻找峰值题目解析
峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回所在位置即可。你可以假设。你必须实现时间复杂度为O(log n)的算法来解决此问题。nums =[1,2,3,1]23 是峰值元素,你的函数应该返回其索引 2。nums =1 或 5你的函数可以返回索引 1,其峰值元素为 2;或者返回索引 5, 其峰值元素为 6。
2024-01-16 22:28:33 392 3
原创 山脉数组的峰顶索引
符合下列属性的数组arr称为i给你由整数组成的山脉数组arr,返回满足的下标i。你必须设计并实现时间复杂度为O(log(n))的解决方案。
2024-01-16 22:21:03 514
原创 vector容器解决杨辉三角
给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。[[1]]
2024-01-15 20:21:23 779 5
原创 每日一练【将 x 减到 0 的最小操作数】
给你一个整数数组nums和一个整数x。每一次操作时,你应当移除数组nums最左边或最右边的元素,然后从x中减去该元素的值。请注意,需要数组以供接下来的操作使用。如果可以将x减到0,返回;否则,返回-1。
2023-12-13 18:21:30 2194 13
原创 每日一练【查找总价格为目标值的两个商品】
购物车内的商品价格按照升序记录于数组price。请在购物车中找到两个商品的价格总和刚好是target。若存在多种情况,返回任一结果即可。[3,15] 或者 [15,3][27,34] 或者 [34,27]
2023-12-10 21:38:37 192 2
原创 每日一练【三数之和】
给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。注意重复表示每个元素不能一一对应。
2023-12-09 16:52:39 930 8
原创 每日一练【移动零】
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。
2023-11-28 21:36:30 542 12
原创 Linux权限
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?从技术角度,Shell的最简单定义:命令行解释器(主要包含)在Windows中,Shell的含义与图形化界面的含义一样shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。
2023-11-28 15:24:01 498 50
原创 我的创作纪念日
最近英语四级考试将于1个月后开考,我不仅要进行英语四级的复习,还要坚持敲代码学习C++初阶,和Linux相关知识,这样的强度是上大学以来还未体会到的,当让要减少自己的游戏时间,平时就不打瓦,只有周末晚上和同学玩玩,预祝自己四级高分,并且C++和Linux学有所成!在这半年的时间里,我也算是小有所成,但跟结实的大佬还是有很大的差距,希望自己能够继续坚持高质量创作,追上佬佬的步伐!创作博客这些日子里,最大的收获是与我一起前行的小伙伴们,在这些天里,我结实了很多志同道合的小伙伴,与我一起前行~
2023-11-06 20:49:39 166 11
原创 C语言解决逻辑分析题(猜凶手)(猜名次)
以后再遇到这类逻辑分析题,我们可以尝试用遍历循环来解决,这种方法最大难点在于如何写出遍历循环的条件。
2023-11-05 18:36:12 235 11
原创 assert断言与const修饰指针的妙用(模拟实现strcpy函数)
本文主要讲解assert断言与const修饰指针的妙用(模拟实现strcpy函数
2023-11-02 21:01:14 154 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人