自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于指针和堆栈

new( )分配这种类型的一个大小的内存空间,并以括号中的值来初始化这个变量;分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量;new返回的是开辟的内存空间的首位地址,也就是说,new出来的对象必须要用指针来接受。new的空间是在堆上的,不像在栈上的对象自动管理生命周期,在堆上的空间必须使用delete或者delete[]来销毁。

2025-10-13 19:03:06 72

原创 关于快速排序

快排的实现有很多种,细节上看,可以有:Hoare法(找到后Swap)、挖坑法(上方代码的直接赋值)、双指针(待学习)。这个三数取中写的很优雅,可以记一记。选出最合适的Key值其实很简单:遍历数组找出中值,但是这样增加了O(n)的时间复杂度,对于长序列数组代价尤其高。快排的关键在于:给出的key值可以讲数据均匀地划分为两部分,最理想的情况是每次划分都是相等的两部分,此时时间复杂度为O(logn)。当给出的数据完全有序(降序或者升序),此时作为nKey的元素是最大/最小值,快排的时间复杂度退化到O(n^2)。

2025-10-13 17:02:42 131

原创 排序算法(冒泡、选择、插入、希尔、快排、归并、桶排序)

【代码】排序算法(冒泡、选择、插入、希尔、快排、归并、桶排序)

2025-10-13 15:51:44 34

原创 【LeetCode-34-35-69-367-二分查找相关】

四道二分查找,几乎是一个模子刻出来的。

2025-09-29 14:11:04 107

原创 【LeetCode-704-二分查找】

二分查找,自己写的有点小问题,冗余了两个if语句。

2025-09-27 15:45:10 413

原创 【LeetCode-392-判断子序列】

【代码】【LeetCode-392-判断子序列】

2025-09-27 15:17:03 97

原创 【LeetCode-349&350-两个数组的交集】

官方解:先对两个数组排序,然后用双指针分别指向两个数组的begin(),依次检测两个指针的值,谁小谁往前走,一样时:判断之前该数是否已经加入过nResultVec(这里的判断很巧妙,由于是升序数组,只需要用一个临时指针存储上一个加入nResultVec的元素,而不需要遍历整个nResultVec。)如果没有加入过,加入。直到任意一个指针超出vec索引,结束循环。

2025-09-27 15:15:22 197

原创 【LeetCode-344-反转字符串】

【代码】【LeetCode-344-反转字符串】

2025-09-27 15:05:59 112

原创 【LeetCode-283-移动零】

让读指针先行,先行带动后行。

2025-09-27 15:04:43 259

原创 【LeetCode-234-回文链表】

最优解:先用快慢指针读到链表中间位置,再将后半部分链表反转,最后逐一比对。一共三种方法:递归、暴力解、最优解。

2025-09-23 14:22:14 206

原创 【LeetCode-206-反转链表】

反转链表,用到前、中、后三个指针。

2025-09-23 14:19:04 92

原创 【LeetCode-202-快乐数】

非快乐数会出现无限有规律的循环,选择用快慢指针来判断循环。

2025-09-23 14:16:09 105

原创 【LeetCode-160-相交链表】

【代码】【LeetCode-160-相交链表】

2025-09-21 21:56:26 126

原创 【LeetCode-141-环形链表】

左指针每次走一步,右指针每次走两步,循环判断左右指针是否相等,若相等,有环。注意边界条件:右指针->next和右指针->next->next都不能非空。

2025-09-19 18:24:06 185

原创 【LeetCode-125-验证回文串】

垃圾题,唯一的作用是让我知道有isalnum()这个函数,用来判断当前的char是不是字母和数字,是返回True。我自己的做法是先去除字符串中的非字母数字字符,再将字符串分成两半,前后指针分别进位/退位,逐一比对。

2025-09-19 18:21:55 131

原创 【LeetCode-88-合并两个有序数组】

超级无敌暴力解,仅打败0.8%

2025-09-15 17:45:21 72

原创 【LeetCode-28-找出字符串中第一个匹配项的下标】

在进行索引/解指针的操作前,不要让索引/指针的位置发生偏移。如果出现这种情况,修改边界条件。自己写的暴力解,以及学习的KMP算法(重点理解PMT数组和Next数组)。

2025-09-15 11:55:22 118

原创 【LeetCode-27-移除元素】

【代码】【LeetCode-27-移除元素】

2025-09-15 11:53:25 116

原创 [LeetCode-26-删除有序数组中的重复项】

值得注意的是:vector的.data()返回的是一个一般指针,取决于vector中数据类型。指针的偏移会根据类的数据大小自动计算偏移量。

2025-09-11 21:38:27 100

原创 【LeetCode-21-合并两个有序链表】

而且我一开始弄错了,题中给出的空链表是ListCode* L1 = Null,而不是ListCode* L1 = ListCode(),默认构造函数没有看清楚。(*l1).next 等价于 l1->next,->实际上是语法糖。*作声明是指针,做执行语句是解引用。

2025-09-09 12:17:35 110

原创 【LeetCode-20-有效的括号】

【代码】【LeetCode-20-有效的括号】

2025-09-08 13:52:31 122

原创 【LeetCode-14-最长公共前缀】

另外,无论是C++中的iterator.begin(),iterator.end()还是python中的切片操作,他们都是左闭右开的。多花时间想好边界条件,不要冲动下笔。

2025-09-08 11:02:35 123

原创 【LeetCode-13-罗马数字转整数】

玩了一下迭代器,对于STL中有索引访问的容器尽量不使用指针和迭代器,想炫技可以在连续容器中使用指针,或者在非连续容器中使用迭代器。

2025-09-07 15:55:24 126

原创 【LeetCode-9-回文数】

实际上检查一个数是否为回文数只需要看其对称性质即可。

2025-09-06 14:33:51 216

空空如也

空空如也

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

TA关注的人

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