自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++类型擦除

类型擦除是 C++ 中实现 “运行时泛型” 的强大技术,通过隐藏具体类型信息,提供统一接口,使代码更灵活、更具扩展性。选择合适的实现方式(继承、

2025-06-15 22:37:19 514 1

原创 std::shared_ptr引起内存泄漏的例子

是 C++ 中用于管理动态内存的智能指针,通过引用计数机制自动释放对象。但在某些场景下,它仍可能导致内存泄漏。可有效避免这些问题。在实际开发中,应尽量避免手动管理原始指针,确保所有动态内存都由智能指针统一管理。,常见于循环引用和错误的指针管理。内存泄漏的核心原因是。

2025-06-14 21:41:59 254

原创 一个模板元编程示例

组件作用示例输入→输出Fun_<true>添加左值引用int → int&移除所有引用Res_专用移除引用工具。

2025-06-13 15:24:43 534

原创 968. Binary Tree Cameras

如果不判断整个树的根节点是否被覆盖,则无法通过下面这种情形。要从下往上处理,所以框架是后序遍历。

2025-06-12 23:59:14 591

原创 135. Candy

考虑右边的比左边大的情况,必须从前到后遍历。考虑左边的比右边大的情况,必须从后到前遍历。先考虑那种情况都可以。

2025-06-12 16:59:57 206

原创 134. Gas Station

【代码】134. Gas Station。

2025-06-12 16:49:29 446

原创 406. Queue Reconstruction by Height

用vector自己的insert函数,位置指定用迭代器。随机迭代器支持+n操作。然后按照直接插入排序的想法,将每个人插入到他应该到达的位置。不过寻找插入位置仍然是O(n)的时间复杂度。先按照身高从大到小排序,身高相等的k小的站前面。插入会很耗时,时间复杂度是O(logn+n^2)复用输入数据people,手写直接插入排序。

2025-06-12 16:28:03 511

原创 45. Jump Game II

正向查找可到达的最大位置。时间复杂度O(n^2)

2025-06-11 20:27:48 296

原创 1005. Maximize Sum Of Array After K Negations

三种方法都是贪心。

2025-06-11 20:14:43 351

原创 55. Jump Game

【代码】55. Jump Game。

2025-06-10 23:59:13 165

原创 376. Wiggle Subsequence

【代码】376. Wiggle Subsequence。

2025-06-10 23:31:44 356

原创 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

原创 23. Merge k Sorted Lists

【代码】23. Merge k Sorted Lists。

2025-06-02 23:58:57 431

原创 22. Generate Parentheses

【代码】22. Generate Parentheses。

2025-06-01 16:39:12 210 1

原创 52. N-Queens II

这道题与第51题是一样的。

2025-06-01 15:43:08 354

原创 79. Word Search

题目描述。

2025-06-01 15:11:30 495

原创 37. Sudoku Solver

【代码】37. Sudoku Solver。

2025-05-31 23:57:32 383

原创 51. N-Queens

记录棋盘上已经处于攻击范围的直线,将判断能否摆放新皇后的时间复杂度降为O(1)。

2025-05-30 23:37:00 980

原创 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 93. Restore IP Addresses

【代码】leetcode 93. Restore IP Addresses。

2025-05-26 21:34:34 795

原创 leetcode 17. Letter Combinations of a Phone Number

【代码】leetcode 17. Letter Combinations of a Phone Number。

2025-05-25 20:50:12 294

原创 leetcode 131. Palindrome Partitioning

分割回文子串。

2025-05-25 20:32:48 418

原创 leetcode 39. Combination Sum和40. Combination Sum II

本题关键是去重。

2025-05-25 18:32:47 404

原创 216. Combination Sum III

【代码】216. Combination Sum III。

2025-05-25 01:03:50 158

原创 77. Combinations

版本二,最开始的循环是不必要的。

2025-05-24 23:44:28 307

原创 leetcode 61. Rotate List和86. Partition List

【代码】leetcode 61. Rotate List和86. Partition List。

2025-05-23 23:53:08 527

原创 146. LRU Cache

【代码】146. LRU Cache。

2025-05-23 23:39:26 382

原创 leetcode 148. Sort List

【代码】leetcode 148. Sort List。

2025-05-22 22:16:20 753

原创 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 92. Reverse Linked List II

思路很简答,但一次性通过还是有点难度的。是第206题的进阶版。

2025-05-21 15:08:20 609

原创 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关注的人

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