- 博客(9)
- 问答 (1)
- 收藏
- 关注
原创 刷题日记四----反转字符串 ----反转字符串II---替换数字
这个不要因为题目本身的题目描述受到相应的影响,书写更多的控制条件反而很混乱,这里只需要保证相应的1. 右指针不越界,2,以2k区间进行移动。这里主要使用双指针法,构造左右两端的指针,通过左右指针进行交换相应的元素,同时保证空间复杂度为O(1)
2025-02-07 20:08:11
133
原创 刷题日记四----454.四数相加II ---- 383. 赎金信---15. 三数之和---8. 四数之和
这里主要使用unordered_map进行分组进行计算,首先前两个进行相加作为键值保存,由于map的唯一性,同一个键值次数进行相加,最后后两个的键值进行取反,如果可以访问到存在的键值,代表这个组合相加为0,则将键值进行相加,表示存在组合数,比如键值为1的值为2,当后面存在一个-1,对它进行取反操作,获取的键值为1,则将次数加二,代表有两个四个数的组合相加为0。怎么移动双指针呢,这就要考虑相加和与0之间的关系,大于0则right–,小于0则left++第二个数与第三个数在找到相应的组合之后进行去重。
2025-02-07 01:58:08
427
原创 刷题日记三--有效的字母异位词;两个数组的交集;快乐数
这里面还有一个插曲,我一直以为题目是异或词,导致我一脸蒙批,这里面主要使用的是数组,有点类似与计数排序,首先构建一个26个字母的result数组,初始化为0,然后对第一个字符串中的字母与‘a’的ASCII码进行相减,就可以保证在数组的对应位置进行加一,之后遍历第二个字符串,同以上的操作,只不过在对应位置进行减一操作,最后遍历result数组是否存在不为零的值,则不是异位词。由于需要保证结果去重,所以选择set集合,所以选用unordered_set.这个题目主要截止条件的区别。
2025-02-05 16:42:35
295
原创 刷题日记一---27移除元素--977有序数组的平方---209长度最小的子数组
一开始在设置相应的i的时候,只是想着移动位置,覆盖掉原有的元素,但是出现重复元素就无法处理,查询完主要的原因之后觉得是i一直向前移动,应当对当前位置仍需要检测,所以对i进行减一,然后for循环进行加1,这样对原位置进行检测。但是题目要求要对去除Target元素进行返回,所以需要更改一下数组的长度。由于一开始数组就是从小到大的排列,所以最大的值一定是在两边,所以可以设置两边的索引进行确定最大值。由于滑动窗口是不了解的,所以这道题还是看了讲解才写完的,这题一开始主要就是暴力求解的方法,平方加直接插入排序。
2025-01-07 01:34:06
230
原创 刷题日记二--开发商购买土地;移除链表元素;设计链表;反转链表
对于这道题目,主要是怎样拆解问题,而不是将问题放在一次循环里面同时处理。而是对问题进行分块处理,这样可以时间复杂度足够低,而且对于算法的处理问题的思路也更加的清晰。这道题也学习ACM的输入模式,怎样书写输入代码。对于这道题主要就是学习C++类中的访问方式,主要就是使用new关键字构建指针,再而就是需要尝试考虑数组的边界问题。主要是循环推出条件的选择和最后因为当前指针为空作为循环的推出条件已经是空的状态,所以应当选择前一个指针作为头指针。就是创建一个虚拟的头结点,方便处理第一个节点删除的问题。
2025-01-07 01:31:55
278
空空如也
自然语言处理学习的问题
2021-06-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人