- 博客(4)
- 收藏
- 关注
原创 代码随想录day4
然后,将快指针重新指向链表的头节点,并将快指针和慢指针分别移动一步,直到它们再次相遇。首先将两个指针都指向链表的头节点,然后将第一个指针向前移动N个节点。此时,第二个指针指向的节点就是要删除的节点的前一个节点,我们可以通过修改指针的指向来删除该节点。然后遍历第二个链表,对于每个节点,如果在哈希表中找到相同地址的节点,则说明两个链表相交。递归的思路是,首先交换当前两个节点,然后递归地交换后面的节点。迭代的方法是,使用一个指针来追踪当前节点的前一个节点,交换当前两个节点后,更新指针和节点的位置。
2024-01-27 22:22:49
146
1
原创 代码随想录day3
但是鉴于我的一些经验来说,递归法的复杂度仿佛通常都是比迭代法要高的,比如本题中的空间复杂度就更高,但在某些题目中递归法却比较好理解(虽然本题不是这样),还是比较推荐迭代法。在开始时我们将cur指向头结点head作为虚拟头结点使用,最后反转成功后返回的是pre结点,是反转后的头结点,此处的cur也是相对应的虚拟头结点。这样就可以使用一个节点类来表示链表中的每个节点,并在链表类中定义插入、删除和获取元素的方法。最重要的是定义一个虚拟头节点,并将其指向原链表的头节点,可以为我们的操作带来不少的方便。
2024-01-26 21:23:18
310
原创 代码随想录day2
然后,不断地向右移动end指针,并累加从start到end之间的元素,直到子数组的和大于等于目标值为止。我的想法是定义两个指针分别指向数组的开头和结尾,比较两个指针指向的元素的绝对值大小,将较大的平方放入结果数组,并将对应的指针向中间移动。解题思路:说实话刚开始包括看测试用例时都不能够很好的理解这个题目意思,需要动手画一下才能领会到,开始在解决途中本想设置一层一层的循环,最后实在是有些混乱。介绍问题:给定一个正整数数组和一个目标值,要求找到数组中长度最小的子数组,使得子数组的和大于等于目标值。
2024-01-25 21:22:19
275
原创 代码随想录day1
依据我的理解,所谓的双指针其实只是一种语义上的指代,至于之前为什么不想认真学习可能是因为我对指针这个词望而生畏,估计不少人应该都经历过初学C语言时被指针支配的恐惧☹,至于本题中的双指针,只要能够领会到一个指针指向的是所求数组的元素,另个指针指向的是该元素的下标就能够顺利的找到思路并解决了。第一题是二分查找,因为之前在算法课上学习过并且有印象,解得比较快。但是对于第二题的双指针法还挺陌生的,虽然记得在有一种排序算法(快速排序)中是使用过的,但是之前并没有认真学习并理解,趁此机会可以学习一遍。
2024-01-24 21:02:35
536
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人