- 博客(6)
- 收藏
- 关注
原创 代码随想录算法训练营第七天 | 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
三数之和用for循环固定第一个数字,四数之和用二重for循环固定前两个数字,然后用双指针划定left和right,如果几个数的和小了,那么就需要右移left指针,从而使nums[left]变大(记住数组已经是有序的了),同样如果几个数的和大了,就左移right指针。把问题优化成两两一组求解,因为这道题只是要求有效解的个数,没要求具体下标,我们只需要用Map来存储nums1和nums2中和的值和这个和出现的个数,用二层嵌套的for循环遍历两个数组,每次如果发现了一个新值就更新Map,否则增加该和出现的次数。
2023-08-29 22:43:33
129
1
原创 代码随想录算法训练营第六天 | 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和
当我们获得数组中的一个数的时候,我们想要找(target-num)这个值在数组中是否存在,因为(target-num)是已知的,所以这个可以作为Key,那么HashMap中的value就可以是我们期待要找的数组下标。如果存在,就返回两个数的下标,如果不存在,就将这个数和它的下标存进HashMap中,这样如果存在(target-num)这个数值,它在寻找相应的键值对的时候就可以找到这个元素。这两者分别实现了 Set 接口和Map接口,前者具有集合的特性,意思是不能有重复的元素,后者主要是通过键值对实现查找。
2023-08-28 21:03:12
212
1
原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
双指针和递归还是很深的学问啊。
2023-08-27 16:56:32
323
原创 代码随想录算法训练营第三天 |203.移除链表元素 、 707.设计链表 、 206.反转链表
这道题很基础,建立虚拟头节点然后对链表遍历即可。注意虚拟头节点在链表中是很常用的操作,在这里用ListNode dummyhead = new ListNode()来创建。
2023-08-26 23:40:56
344
原创 代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵
这道题也是之前看过的,也有思路,迅速解决,没有什么太大问题。
2023-08-24 22:15:57
24
1
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
又一次试图开始刷算法题,所以报了训练营,希望可以好好坚持~对于Java的库函数还是过于不熟悉了,提醒自己对于nums.length的使用。
2023-08-23 22:41:33
636
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人