牛客566659818号
牛客566659818号
全部文章
分类
归档
标签
去牛客网
登录
/
注册
牛客566659818号的博客
全部文章
(共12篇)
题解 | #删除有序链表中重复的元素-I#
本题用双指针,先定义一个tail使其一直遍历,并与定义的cur进行比较,如果不相等,则将cur的next指向tail,并将cur传至tail位置,如果相等则tail一直遍历。 struct ListNode* deleteDuplicates(struct ListNode* head ) {...
链表
C
2022-08-10
0
343
题解 | #链表的奇偶重排#
本题用了四个变量,作用分别是n1,n2寻找奇数下标和偶数下标;h1,h2分别是奇数的头结点和偶数头结点,最后将n1的next指向h2,将两数相连即可。 struct ListNode* oddEvenList(struct ListNode* head ) { // wr...
链表
C
2022-08-10
5
546
题解 | #链表相加(二)#
本题解法思路简单,就是翻转后两个链表对应的数进行相加,如果得到结果大于10,则需要取余,并用一个数保留进位,但是该题边界条件判断较为复杂(俺都是各处取经)。 1、如果两个链表都没有到NULL则一直进行循环。其中如果在此循环中有一个链表已经为NULL,则不再访问这个链表val与Next,不然会段...
链表
C
2022-08-05
0
356
题解 | #两个链表的第一个公共结点#
本题参考大佬的巧解,将两个指针遍历两个链表,因为两个的速度和路程相等,那么相遇点一定是相交点,如果两者不相交,因为速度和路程一样那么,都会指向NULL。 还有一种很笨的方法循环里面套循环也可以,但是时间复杂度高。 struct ListNode* FindFirstCommonNode(st...
链表
C
2022-08-04
0
309
题解 | #删除链表的倒数第n个节点#
思路:本题先查找到倒数的第n个节点,用slow存储这个点的位置,相关解发参考算法上一道题,找到后用一个变量tail存储这个n点的前一位,再将tail的next指向改变为slow的next,注意有内存泄漏所以要加上n是不是头结点的位置,如果是则改变头的指向。 struct ListNode* remo...
双指针
C
链表
2022-08-04
0
316
题解 | #链表中倒数最后k个结点#
此题思路快慢指针,先用快指针走k步,如果k的大小没有超过链表大小,则快慢指针同时移动,这样两者始终保持k距离,当快指向空时,返回慢指针即为倒数的k个结点 struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) { &...
双指针
链表
C
2022-08-03
5
260
题解 | #链表中环的入口结点#
本题理解实现思路后,代码实现比较容易,其实现式子为2(a+b)=a+(b+c)n (n为闭环的圈数,这个式子就是快点的等式,左边是慢节点两倍,右边就是快点走的路), 可以得到,从相遇点到闭环起始点距离c与a是相等的,所以再用快指向头结点,从新遍历并将速度改为1步,当两点再次相遇时,那个点就是闭...
链表
C
双指针
2022-08-03
0
328
题解 | #判断链表中是否有环#
本题用快慢指针,来解题,思路很简单一个指针指向他下一个,另一个指向他的下下个,两者如果是在环中,快指针迟早会追上慢指针,这时两者相等返回true,如果不为环则快指针会走到空返回false。 小白刚刚练习代码,还有很多可以优化的地方,在这里主要是提供自己的思路。注意快慢只能差1,如果快为3格一次...
C
链表
双指针
2022-08-02
0
316
题解 | #合并两个排序的链表#
该题借用了评论区大佬的思路,(原先是准备在原链表中直接进行插入排序的,结果代码写到80多行,结果还不正确,于是采用了开辟一个新节点的思路)。 思路是,先将两个链表从第一位开始比较,小的就插入在空节点的后面,形成新的链表,然后依次排序,这里面有一个注意点是判断其中一个链表为空的时候结束循环,又因...
链表
C
2022-07-29
0
360
题解 | #链表中的节点每k个一组翻转#
纯c编写,没有递归与调用库,只学了c的可以参考借鉴。 本题思路:先设置一个结点从哨兵位开始进行k的判断如果这个结点能够遍历k遍,则保留该结点(此时该结点的位置为没翻转前第一遍的最后一个结点,在设置一个nxt结点接取这个结点的next(nxt此时为下一段k的第一个元素)), 如果不能遍历k...
链表
C
2022-07-28
2
359
首页
上一页
1
2
下一页
末页