一千零一夜
文章平均质量分 57
争取做到1001道题~
humbIe
此人不懒
展开
-
010、随机链表复制
的,如果按照我的想法复制,random是空的时候没问题,不是空的时候random指针不是指向新链表里面的结构,还是。这里注意newcur可能会越界,所以要 if 拦截一下,cur走到头的时候,不要让newcur再走了!复制完copy里面的random之后,再把copy链表给解下来,还原原链表。,我创建节点的时候加一个结构体成员不就可以了吗?我的第一个想法是,直接把random指针看成一个。copy链表和原链表得先建立联系,把每一个节点。1、拷贝到每个节点的后面,组成两倍长度的新链表。原创 2024-10-25 14:56:38 · 375 阅读 · 0 评论 -
009、环形链表
2、我们需要证明一个数学问题,在起始点开始走和在相遇点开始走,再次相遇的地方一定是入环点。1、 首先判断链表有没有环,方法是快慢指针,如果有环,快指针会追上慢指针,两指针相等。3、于是在第一段代码的基础上,有环就加一个循环找进环点,没有环就返回空。原创 2024-10-21 18:52:13 · 200 阅读 · 0 评论 -
008、相交链表
嵌套循环,从listA的第一个节点开始与listB的每个节点比对,有相同的就返回这个节点。不用循环的方式找交点,如果双指针一起走的话,listA和listB的长度不同,容易。,让长链表的指针先走一会儿,再齐头并进,就能找到交点。如图,让listB的指针先走1下,就可以齐头并进了。所以先求listA和listB的长度,然后。,再双指针一起走就可以了。原创 2024-10-19 01:10:34 · 307 阅读 · 0 评论 -
007、链表的回文结构
链表的回文结构。原创 2024-10-19 00:06:27 · 367 阅读 · 0 评论 -
006、链表分割
这道题的思路,遍历原链表,小于x的放到一个链表里,大于x的放到另一个链表里。然后把两个链表接起来。建立的两个新链表都是有哨兵位的,也就是有头结点,排序结束后要free两个头结点。原创 2024-10-18 23:12:41 · 150 阅读 · 0 评论 -
005、翻转链表
创建一个新的头结点newhead,然后把原来的链表节点头插到新的节点里。注意在这个过程里cur->next找不到了,需要提前保存一下。思路是改变链表的指针方向,本来箭头向右改向左。问题是改变箭头之后链表就无法继续往下走了,所以需要3个指针,利用迭代的办法往下走。递归,递归和上面的循环有相似的地方,不过不太好理解。原创 2024-10-17 17:29:17 · 232 阅读 · 0 评论 -
004、合并两个有序数组
创建一个新数组sorted来存储数据,再去把排好序的数组粘到nums1里。创建3个指针在三个数组里移动,把较小的数据先放进去。和第二种方法类似,只不过是倒着比较大小,这样的好处是,0一定小于有效元素,而且不需要创建新数组直接在nums1里面操作不会损失数据。数组nums1有m个元素, 直接在下标为m的位置处追加nums2的元素。然后再qsort整体排序。qsort函数,(数组首元素地址,排序的个数,排序元素大小, 比较函数)注意比较函数里面的参数要传递指针。原创 2024-10-10 23:52:56 · 473 阅读 · 0 评论 -
003、移除元素
用两个下标同时遍历数组,一个是scr一个是dst,dst是我们删除元素之后的数组,dst一定是小于scr的,所以可以共用一个数组空间而不损失数据。和上题的思路一样,dst假设就是我新建的一个数组的下标,由于是删除操作,dst一定小于src,所以就用原来的nums的数组空间。数组首元素一定需要,所以从1开始遍历,后面的元素和上一个元素相同就跳过,不同再去给dst。原创 2024-09-27 00:53:44 · 182 阅读 · 0 评论 -
002、序列中删除指定数字
第一个整数代表序列的长度,第二个输入是一个数组,第三个输入是我们要删除的数字。如果数组中有多个该数字要一起删除。原创 2024-09-20 20:30:43 · 295 阅读 · 0 评论 -
001、旋转数组
尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。你可以使用空间复杂度为O(1)的 原地 算法解决这个问题吗?原创 2024-09-18 22:54:33 · 212 阅读 · 0 评论
分享