自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第8天(字符串)| 28. 实现 strStr(),459.重复的子字符串,字符串总结 ,双指针回顾

28. 实现 strStr() (本题可以跳过)

2023-07-05 15:01:53 62

原创 代码随想录算法训练营第7天(字符串)| 344.反转字符串,541. 反转字符串II, 剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

首先将字符串大小扩展到相应大小,前指针指向原字符串末尾,后指针指向扩展后的字符串末尾,从后向前填充,直到两指针相遇。但在 python 里,字符串无法更改,需要先将字符串转成列表进行操作,因此无法节省额外空间。若字符串可改变,可以先将整个字符串反转,再反转每个单词使单词恢复正向顺序,从而节省额外空间。如果字符串可以改的话,先反转前 n 个元素,再反转 n 后的元素,最后反转整个字符串,实现不使用额外空间进行反转。时间复杂度 O(n),空间复杂度 O(n)。时间复杂度 O(n),空间复杂度 O(n)。

2023-07-01 09:48:18 58

原创 代码随想录算法训练营第6天(哈希表 & 双指针)| 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

先将列表排序徐,然后遍历列表,每次固定一个元素,用左右指针开始寻找满足条件的组合,根据加和的大小来移动左右指针。注意:在遍历后两个列表时,如果两数之和的相反数 在hashmap中,count 不是 +1,而是加上 hashmap 里对应 index 的 value,因为是排列组合。先遍历两个列表,用 hashmap 记录下两数之和,index 是和,value 是个数。的拓展题,同样可以用 hashmap 或 数组来记录第一个字符串中每个元素出现的次数,然后再遍历第二个字符串,逐个检查。

2023-06-30 16:20:49 53

原创 代码随想录算法训练营第5天(哈希表)| 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

本题的关键在于,给定一个数,去查找是否有另一个数使得两数之和满足要求。首先遍历 nums1,用字典(哈希表中的 hashmap 结构)来记录元素出现的次数(上一道题中与此对应的是用数组来记录元素出现的次数),然后遍历 nums2,判断元素是否在 hashmap 中。首先遍历 s,将 s 里每一个字母出现的次数记录在哈希表中,然后再遍历 t,检查每个元素是否在哈希表里,以及出现的次数是否满足要求。本题的关键是判断两个字符串里的元素的出现次数是否相同,原理是判断一个元素是否曾出现过,因此考虑哈希法。

2023-06-30 15:39:15 64

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

判断出有环之后,考虑两指针相遇的位置。化简后得 x =(n-1)*(y+z) + z,也就是说,如果将慢指针放在头节点,将快指针放在相遇节点,两者都每次走一步的话,再次相遇的位置即是环开始的位置。若希望删除倒数第 n 个节点,先让快指针走 n 步,然后让快慢指针同时移动,当快指针走到 None 时,慢指针指向的节点就是倒数第 n 个节点。首先算出两个链表的长度,然后将两个链表从尾部对齐,对齐后从短链表的头节点位置开始寻找,逐个比对两个链表中的节点,如果有节点是一样的,说明两个链表在此节点处相交。

2023-06-27 19:44:24 24

原创 代码随想录算法训练营第3天(链表)| 203.移除链表元素,707.设计链表,206.反转链表

遍历链表,遍历到每一个节点(curr)时,同时记录其前(pre)后(temp)的节点,然后将该节点指向的地址改为前面的节点(pre),再将遍历位置移动到下一个节点(temp)即可。在学校学习链表的时候老师一再强调,链表一定要画图,感觉链表的题画图解题确实事半功倍。第一瞬间想到的思路就是,先判断头节点是否为要删元素,单独写一段逻辑给头节点,直到找到不需要删除的头节点。然后写另一套逻辑给其余节点。通过设置虚拟头节点,可以使原链表的头节点被当作正常节点一样处理,实现一套逻辑处理整个链表。203.移除链表元素。

2023-06-25 10:39:39 34

原创 代码随想录算法训练营第2天(数组)| 977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II。

视频讲解:最直观的思路是先将所有元素平方,再排序。时间复杂度为排序的时间复杂度,即最快。由于数组是有序的,平方之后最大的在两侧,最小的在中间。因此只需要比较两侧的值哪个大。因此可以用左右指针来解决,时间复杂度为。P.S.: 其实刷题时候会有一个问题,就是什么时候用什么方式。

2023-06-24 09:46:10 67

原创 代码随想录算法训练营第1天(数组)| 704. 二分查找、27. 移除元素。

我自己原先的思路比较浅薄且暴躁,永远都是 left = middle+1, right = middle-1,然后你想边界值嘛,如果 left = middle+1, right = middle-1 了,搜索到最后就会出现 left == right 的情形(e.g., [3, 4], left = 3, right = 4, middle = 3, 如果 target 是4,那 middle < target,就需要 left = middle+1 = 4,这样就 left == right 了)。

2023-06-23 15:51:37 72 1

空空如也

空空如也

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

TA关注的人

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