自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录day11(补卡) 150. 逆波兰表达式求值 | 239. 滑动窗口最大值 | 347.前 K 个高频元素

思路:针对前K个高频元素,需要完成统计元素出现的频率、对频率排序、找出前k个高频元素这三步操作。利用小顶堆来统计最大前k个元素,每次将出现频率最小的元素弹出。题目挺难,需要多刷几次加深印象。思路:该题只能看卡哥的题解了,题目个人认为相当难了。要自己实现一个单调递减队列的类,还有不少判定条件。所以该题照着写了一遍以理解。思路:逆波兰式是后缀表达式,相当于后续遍历,用栈来实现,本题较容易。150. 逆波兰表达式求值。239. 滑动窗口最大值。347.前 K 个高频元素。

2024-07-30 11:37:24 155

原创 代码随想录day10 232.用栈实现队列|225. 用队列实现栈| 20. 有效的括号|1047. 删除字符串中的所有相邻重复项

判断字符串是否有效。要分清楚括号不匹配的三种情况, 1、左括号多余不匹配 2、括号类型没匹配上 3、右括号多余不匹配。思路:用两个栈来实现队列元素的进出操作。思路:用一个队列加循环操作实现栈的出入。1047. 删除字符串中的所有相邻重复项。思路:用栈来实现相邻元素匹配的消除操作。225. 用队列实现栈。思路:给定一个只包括。232.用栈实现队列。

2024-07-13 23:30:14 171

原创 代码随想录day9 151.翻转字符串里的单词| 卡码网:55.右旋转字符串

思路:采用快慢指针,首先移除多余的空格,再整体反转,最后再进行一次单词反转。思路:整体倒叙,把两段子串顺序颠倒,两个段子串里的的字符再颠倒一次。151.翻转字符串里的单词。卡码网:55.右旋转字符串。用KMP做的算法题先理解。

2024-07-12 21:50:40 162

原创 代码随想录算法训练营day8 344.反转字符串| 541. 反转字符串II|卡码网:54.替换数字

思路:使用C++中的库函数reverse来进行反转。每次间隔取2k个字符,只反转前k个字符,剩余字符小于2k但大于或等于k个,则翻转前k个字符,剩余字符少于k个,则将剩余字符全部反转。按照这个逻辑写代码。思路:用ACM模式写代码有些不习惯,还要多熟悉。对于数组填充类问题,预先给数组扩容带填充后的大小,然后从后向前进行操作。思路:使用库函数swap()解决字符反转。541. 反转字符串II。卡码网:54.替换数字。

2024-07-11 21:56:38 212

原创 代码随想录算法训练营day7 454.四数相加II| 383. 赎金信| 15. 三数之和

思路:使用哈希法的map去处理,key放nums1和nums2的和,value放nums1和nums2和出现的次数,然后遍历和和次数放入map中,nums1+nums2+nums3+nums4=0;最后返回count即可。思路:用双指针,去重操作较繁琐,用起来很麻烦。要求找到abc 使得a + b +c =0,其中 a = nums[i],b = nums[left],c = nums[right]。思路:和有效字母异位词一样,用哈希法的数组这一数据结构实现,不难。454.四数相加II。

2024-07-10 16:38:37 226

原创 代码随想录算法训练营day6 242.有效的字母异位词| 349. 两个数组的交集| 202. 快乐数 | 1. 两数之和

思路:该题较难,用到了哈希法里的map数据结构,map中的数据是以<key,value>形式储存的,key来存元素,value来存下标,同时也用到了迭代器的概念。map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(相加等于target)。std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。

2024-07-09 17:10:20 297

原创 代码随想录算法训练营day4补录 24. 两两交换链表中的节点 |19.删除链表的倒数第N个节点 | 面试题 02.07. 链表相交| 142.环形链表II| 707设计链表

环的入口可用快慢指针解决,先固定快指针每次走两格,慢指针每次走一格,这样就有数学关系2(x+y) = n(y+z)+x。其中x表示head节点到环的入口节点处,y表示环中入口到快慢节点相遇的节点的距离,z表示相遇节点到入口的距离。思路:虚拟头结点同样需要,两两交换需要设置两个tmp1、tmp2保存临时节点,边界条件也要注意,区分偶数个链表和奇数个链表。思路:删除倒数第N个节点,可用快慢指针解决;目的要求快指针与慢指针的间隔为N即可,又因为要删除节点需要知道删除节点的前驱节点,由前驱节点来操作删除事宜。

2024-07-07 19:43:13 180

原创 代码随想录算法训练营day3 203. 移除链表元素|206. 反转链表

203. 移除链表元素题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/思路:单链表问题,移除某一位置链表元素需要明确知道该元素的直接前趋,为了避免不必要的麻烦,创建了虚拟头节点并用完之后及时释放,做链表问题时要明确dummyhead->next什么时候是节点什么时候是指针。该题不难。class Solution {public: ListNode* removeElemen

2024-07-05 23:39:20 259

原创 代码随想录算法训练营day2 977有序数组的平方|209长度最小的子数组|59螺旋矩阵

思路:使用滑动窗口,不断的调节子序列的起始位置和终止位置,直到找到最小的子数组满足大于等于target。该题较难,难在滑动窗口的起始位置和终止位置的表示,看了视频没看懂,后续复盘时需解决这个问题。ret取最大值INT32_MAX方便回滚。思路:注意边界条件,应用循环不变量条件简化思考过程,本题不难。注意变量定义是在循环内定义还是在循环外定义和一些其他细节,可能导致测试用例通过不全。思路:双指针思想,i指向起始位置,j指向终止位置;每次遍历比较i*i和j*j,把较大的传给新数组arr。977有序数组的平方。

2024-07-04 23:45:32 150

原创 代码随想录day1-二分查找和移除元素

思路:设置左右指针,注意边界,左闭右闭还是左闭右开,两种情况解法略有不同。左闭右闭时right = nums.size()-1;左闭右开时right = nums.size();一个for循环用于遍历需要移除的等于val的数值,另一个for循环用于将后面的数值一一覆盖等于val的数值的位置。双指针思路:设置快慢指针,执行一次for循环,快指针用于查找数组nums中不等于val的值,慢指针用于接收快指针反馈下来的值组成新数组。收获: 复习了二分查找的使用,注意了边界区间。

2024-07-03 23:48:20 160

空空如也

空空如也

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

TA关注的人

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