- 博客(212)
- 收藏
- 关注
原创 c++类型擦除
类型擦除是 C++ 中实现 “运行时泛型” 的强大技术,通过隐藏具体类型信息,提供统一接口,使代码更灵活、更具扩展性。选择合适的实现方式(继承、
2025-06-15 22:37:19
514
1
原创 std::shared_ptr引起内存泄漏的例子
是 C++ 中用于管理动态内存的智能指针,通过引用计数机制自动释放对象。但在某些场景下,它仍可能导致内存泄漏。可有效避免这些问题。在实际开发中,应尽量避免手动管理原始指针,确保所有动态内存都由智能指针统一管理。,常见于循环引用和错误的指针管理。内存泄漏的核心原因是。
2025-06-14 21:41:59
254
原创 968. Binary Tree Cameras
如果不判断整个树的根节点是否被覆盖,则无法通过下面这种情形。要从下往上处理,所以框架是后序遍历。
2025-06-12 23:59:14
591
原创 406. Queue Reconstruction by Height
用vector自己的insert函数,位置指定用迭代器。随机迭代器支持+n操作。然后按照直接插入排序的想法,将每个人插入到他应该到达的位置。不过寻找插入位置仍然是O(n)的时间复杂度。先按照身高从大到小排序,身高相等的k小的站前面。插入会很耗时,时间复杂度是O(logn+n^2)复用输入数据people,手写直接插入排序。
2025-06-12 16:28:03
511
原创 leetcode 108. Convert Sorted Array to Binary Search Tree和1382. Balance a Binary Search Tree
这两道题构建平衡二叉树的方法是一模一样的。
2025-06-04 15:25:41
264
原创 leetcode 455. Assign Cookies和2410. Maximum Matching of Players With Trainers
这道题和上面的是一模一样的。
2025-06-04 14:57:57
274
原创 46. Permutations和47. Permutations II
【代码】46. Permutations和47. Permutations II。
2025-05-29 22:55:12
291
原创 491. Non-decreasing Subsequences
由于题目保证-100<=nums[i]<=100,去重的哈希表也可以用数组来实现。
2025-05-28 23:51:04
191
原创 445. Add Two Numbers II
时间复杂度O(m+n+max(m,n)),m和n是两个链表的长度。空间复杂度是O(1)。时间复杂度O(max(m,n))。空间复杂度O(m+n)。
2025-05-28 15:03:32
282
原创 234. Palindrome Linked List
第一步,用快慢指针法找到链表后半部分的开头结点。如果结点个数是奇数,则正中间的结点算作后半部分的开头也可以。可以用递归法逆序遍历链表。时间复杂度O(n)。递归栈的深度是n,所以空间复杂度还是O(n)。将链表后半部分反转。然后同时遍历前半部分和后半部分,逐个比较。也是需要遍历两次,时间复杂度O(n)。空间复杂度O(n)。时间复杂度O(n),空间复杂度O(n)。第三步,同时遍历前半部分和后半部分,判断是否回文。时间复杂度O(n)。空间复杂度O(1)。第二步,反转后半部分链表。第四步,恢复原链表。
2025-05-28 14:19:36
722
原创 78. Subsets和90. Subsets II
子集中元素的个数可以是0,1,2...,nums.size()对于每一种情况,可以用回溯来收集。
2025-05-27 23:37:24
338
原创 leetcode 17. Letter Combinations of a Phone Number
【代码】leetcode 17. Letter Combinations of a Phone Number。
2025-05-25 20:50:12
294
原创 leetcode 61. Rotate List和86. Partition List
【代码】leetcode 61. Rotate List和86. Partition List。
2025-05-23 23:53:08
527
原创 leetcode 83和84 Remove Duplicates from Sorted List 和leetcode 1836
删除链表中的结点合集。
2025-05-22 22:12:37
602
原创 leetcode 25. Reverse Nodes in k-Group
【代码】leetcode 25. Reverse Nodes in k-Group。
2025-05-21 19:43:17
226
原创 leetcode 21. Merge Two Sorted Lists和2. Add Two Numbers
【代码】leetcode 21. Merge Two Sorted Lists和2. Add Two Numbers。
2025-05-21 14:28:16
323
原创 138. Copy List with Random Pointer
问题的关键是,random指针指向的是原链表的结点,这个原链表的结点对应哪一个新链表的结点呢?有两种办法。一是用哈希表。另一种是复制原链表的每一个结点,并将新结点接在原结点的后面组成一个长度加倍的链表,这样原结点的直接后继就是该原结点对应的新结点。
2025-05-21 11:23:47
546
原创 leetcode 153. Find Minimum in Rotated Sorted Array
如果整个数组是有序的,最小值就是第一个元素。最小值左侧没有元素,理解为有无穷大的值,上述规律也可以说是成立的。最小值右侧(包含最小值自己,不包含x)的元素全部小于x。最小值左侧(不含最小值自己)的元素全部大于x。假如整个数组最后一个元素是x。
2025-05-20 18:03:40
300
原创 leetcode 33. Search in Rotated Sorted Array
第二种情况,左右两部分只有一部分是有序的。此时看target是否在有序的那部分。如果是,那就去有序的那部分做正常的二分查找。如果否,说明target在无序的部分,并且问题规模缩小一半,重复前面的逻辑即可。第一种情况:左右两部分都是有序的,说明nums[mid]就是整个数组的最大值。此时只需要判断target在哪个部分,然后去那个部分做正常的二分查找即可。可以发现的是,将数组从中间分开成左右两部分的时候,一定至少有一部分的数组是有序的。左部分[left,mid-1],右部分[mid+1,right]。
2025-05-20 17:47:20
663
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人