[算法数据结构] 三刷代码随想录

数组专题

1.二分法 边界的确定,举例计算。结合退出while条件,确定左右区间的更新方式。

2.移除元素。11.1仍没有明确思路

3.有序数组平方。关键:非递减数组(可能含负数)平方之后,仍然非递减。双指针,从两头开始遍历,确定平方后较大的数,放到新数组中。

4.长度最小的子数组。滑窗的思想,主要是记得更新左区间。

5.螺旋矩阵II。懂得划分区间,使得能够循环填充矩阵。

链表专题

1.移除链表元素。链表中的遍历,用while(cur->next != nullptr)来构造循环。

2.设计链表。注意,复用addHead, addTail函数的时候不要重复加size大小。

3.翻转链表。双指针,哑节点。

4.两两交换链表中的节点。关键如何构造循环。

5.删除链表的第N个节点。构建距离为N的双指针,然后同时移动,找到删除节点的前一个节点,执行删除的操作。

6.链表相交。统计两个链表长度,让双指针从同一个地方移动,判断链表节点是否相同。

7.环形链表II。用哈希表存放链表节点的地址,判断遍历的节点地址是否出现过,如果出现过那么意味着是环形链表。

哈希表

1.有效的字母异位词。由于讨论的情况是字母,有限个数的。因此可以用unordered_map来记录,也可以用数组,来记录。

2.两个数组的交集。由于是数字,因此建议用unordered_map来进行存储。哈希表的构建,哈希表的遍历。

3.快乐数。要么最后结果变为1,要么无限循环。因此可以记录每一次的值,来判断是否出现过,如果最后为1,那么为快乐数,如果最后的数出现过,那么就不是快乐数。

4.两数之和。在数组假如出现重复数字的情况下,纠结。可以遍历数组,然后判断哈希表中是否存在(target - nums[i]),如果不存在就将其放入。

5.四数之和。先构建两个数组之和(键)出现的次数(值)哈希表。再遍历剩下两个数组,寻找哈希表中是否存在[0 - nums3[m] - nums4[n]] 如果存在,更新出现的总数。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值