自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法训练营day8-字符串part01-反转字符串、反转字符串II、卡码网-替换数字

记录遍历的区间,如果区间的字符数目达到2 * k则进行翻转前面的k个字符,最后需要对末尾情况进行处理,注意遍历的时候区间长度是endI - startI + 1而最后的末尾处理长度是endI - startI。可以使用reverse()函数直接对数组进行反转,不过没啥意义了,所以还是最好自己写一下交换的逻辑。

2024-07-10 22:10:49 178

原创 算法训练营day7-哈希表part02-四数之和II、赎金信、三数之和、四数之和

的复杂度,然后思考是否能够优化,由于这是四个不同的数组,所以在匹配相加和的时候几乎没啥限制,不用去重,所以可以直接使用unordered_map去记录前两个数组中两个元素相加和出现的个数,然后从另外两个数组中去寻找响应的一半,从而减少时间复杂度。统计两个字符串的字符集中字符出现数量再比较即可。

2024-07-10 09:04:44 256

原创 算法训练营day6-哈希表part01-有效的字母异位词、两个数组的交集、快乐数、两数之和

题目比较简单,两个字符串就是顺序不同而已,有很多种做法,比如将两个字符串排序然后依次比较各位、统计字符串中的字符出现次数再比较是否两个字符串中数量一致等,也可用哈希的思路分别构建26维的数量数组进行统计,将字符映射到对应的数组下标如s[i] - ‘a’。

2024-07-09 00:44:40 258

原创 算法训练营day4-两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表||

涉及到翻转链表需要维护三个变量:pre、fast、slow,分别保存前置节点、翻转前最右边的节点以及翻转前最左边的节点,注意在第一次翻转的时候需要保存好头节点;

2024-07-06 10:19:23 421

原创 算法训练营day3-移除链表元素、设计链表、反转链表

因为实现的时候考虑到便捷快速地定位到头节点和尾节点,以及需要判断索引在不在链表范围内,所以将头节点地址、尾节点地址、链表长度作为状态变量都保存了下来,另外为了方便删除操作设置了冗余节点m_dummyNode。不过需要注意的是,每次在添加和删除节点的时候,一定要记得可能会更新这三个状态变量。对于链表中删除节点,需要保存的信息有:前驱节点、当前节点、后继节点,另外如果涉及到删除链表节点,最好使用一个冗余节点也就是dummyNode节点去操作,会省去一些边界问题的处理(如删除头节点)。

2024-07-06 01:25:36 453

原创 算法训练营day2-有序数组的平方、长度最小的子数组、螺旋矩阵||

Day1 任务:LeetCode 977有序数组的平方、 Leetcode 209 长度最小的子数组、LeetCode 59 螺旋矩阵||LeetCode 977有序数组的平方题目描述数据样例解题思路代码实现Leetcode 209 长度最小的子数组

2024-07-05 00:39:53 253

原创 算法训练营day1-二分查找、数组移除元素

在连续的地址空间的数组中删除指定值,涉及到数组元素的移动,因为删除元素之后的新数组长度

2024-07-03 22:14:04 344

原创 设计模式-单例模式(C++版)

单例模式在开发当中用的比较广泛,本文章介绍了单例模式的常见实现:饿汉模式、懒汉模式、双重检查锁定以及一些实现过程中遇到的问题

2024-06-04 11:26:40 1063

原创 面试手撕-LRU

LRU(Least Recently Used)即最近最少使用,是一种计算机科学中的资源管理策略,主要用于实现缓存淘汰和页面置换算法。该策略的核心思想是:当系统需要腾出空间以容纳新数据时,优先考虑移除最近最长时间未被访问或使用的项。这样可以保持缓存或内存中存放的是近期最有可能再次被访问的数据,从而提高数据访问的效率和命中率。

2024-05-31 15:32:43 122

原创 std::list中splice成员函数的用法

首先了解std::list容器的介绍:std::list容器在C++的标准模板库(STL)中,其底层实现是采用双向链表(data structure)。更具体地说,它通常实现为一个双向带头循环链表(doubly-linked list with a loop),这意味着每个节点不仅包含指向下一个节点的指针,也包含指向前一个节点的指针,并且链表的头部和尾部通过指针相连形成一个环。

2024-05-31 14:59:34 442

原创 面试手撕-shared_ptr

std::shared_ptr 是C++标准库中的一个智能指针类型,它提供了自动的内存管理功能,通过引用计数机制来决定所管理的对象何时应该被删除。当最后一个指向对象的 shared_ptr 离开作用域或者被重置时,它所指向的对象会被自动删除,从而防止了内存泄漏。

2024-05-30 00:21:57 269

原创 面试手撕-三数之和-Leetcode 15

三数之和、双指针、去重

2024-05-09 17:14:43 236

原创 快速排序(C++版)-快排选择第K大的数

快速排序、快速选择第k大的数

2024-05-09 15:43:33 301

原创 面试手撕-双指针-Leetcode 11盛最多水的容器

双指针

2024-05-09 01:17:33 208

原创 机试真题-扫描线算法-KS 24.05.08.02

机试真题、扫描线算法

2024-05-08 22:12:33 142

原创 机试真题-前缀和 XC 24.05.06.03

前缀和、快速幂

2024-05-08 01:12:54 151

原创 机试真题-暴力/大整数运算 XC 24.05.06.02

机试笔试系列,暴力模拟,大整数,字符串操作

2024-05-07 20:41:18 489

原创 机试真题-模拟题 HW 24.4.10.01

题型为模拟题,但是处理起来比较麻烦,总体涉及到三个步骤:输入日志的处理与信息提取、计费单的保存、费用的计算。需要对容器的使用比较熟练。

2024-04-30 08:53:18 153

原创 面试手撕-删除链表第N个节点-LeetCode 19

思路:第一次遍历先求出链表长度,然后算出指定的位置,第二次遍历的时候找到对应节点进行删除。双指针指针:快慢指针,它们之间的距离为N,然后类似于滑动窗口一起向前。代码随想录 (programmercarl.com)

2024-04-29 11:13:13 133 1

空空如也

空空如也

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

TA关注的人

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