我是愿至安
我是愿至安
全部文章
分类
算法-链表(4)
题解(23)
归档
标签
去牛客网
登录
/
注册
我是愿至安的博客
全部文章
(共27篇)
题解 | #两个链表生成相加链表#
核心思想 ######## 自主实现,连写带调花了近5个小时,思路很清晰,但是实现过程中,仍然遇到一些低级错误和容易忽略的东西 判任意链表为空,则返回另一个链表 反转两条链表 # 独立实现递归反转函数 分别计算两条链表的长度,后面会用,较重要 遍历反转后的短链表(长度相同时,随便一个),同时每...
C
2022-02-12
1
507
题解 | #链表内指定区间反转#
核心思想 借鉴了漫漫云天自翱翔的父函数通过递归,m和n减一的思路来确定反转部分 最初我的思路是通过一遍循环,找出来开始和反转的结点,局部反转的独立函数大同小异,因为调试的时间有点长,就暂时放弃了我分享的原因是因为,题解里没有c的实现 父函数递归入栈,找到实际要反转的结点 根据head->...
C
2022-02-10
15
1447
题解 | #删除链表的倒数第n个节点#
核心思想 解法3: 三刷用快慢指针一遍写过 快慢指针定位 对删除首节点,需要用定义新结点的方式来进行特殊处理 /** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上sta...
C
2022-02-08
0
454
题解 | #链表中的节点每k个一组翻转#
核心思想 递归的方式 每次判断待翻转链表是否小于K 每k个结点翻转也用递归的方式 /** * struct ListNode { * i/** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言...
C
2022-02-07
1
461
题解 | #重排链表#
核心思想 递归 每入栈,标记出来尾结点,且断开其父节点 入栈是往中间走 出栈是从中间开始排序,往两边走 /** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,...
C
2022-02-07
1
372
题解 | #判断一个链表是否为回文结构#
核心思想 解法1: 递归方式 判断空链表case 单节点case 通过全局静态变量保存原始头节点 递归到尾节点 出栈方向,旧头结点和尾结点开始相向而行,比对 递归 # 因为给出原型函数无法实现递归,所以得另写个递归函数 得通过全局变量标记出来原始头结点 新的递归函数到尾结点 递归回程方向开始...
C
2022-01-28
1
573
题解 | #反转链表#
核心思想 标准的递归结构- struct ListNode* ReverseList(struct ListNode* pHead ) { // write code here // case1 链表为空 if (pHead == NULL) { ...
C
2022-01-27
0
270
题解 | #链表中倒数最后k个结点#
核心思想 解法1: 求链表长度 计算len - k = index 正序遍历走到index,即输出 todo 解法2: 递归到尾结点 统计长度的定义和累加位置很重要,函数每次进来压栈,就累加 尾结点判断条件和上述挂钩,pHead->next == NULL, 则判断的是尾结点 开...
C
2022-01-27
0
388
题解 | #两个链表的第一个公共结点#
参考题解理论:相同速度,相同路程,有公共结点,总会相遇 其实现主要逻辑是,构成环 成环后的节点数 = 两链表节点数之和 # 两链表算成独立两条链表 代码 /** * struct ListNode { * int val; * struct ListNode *next; * }...
C
2022-01-25
10
771
题解 | #删除有序链表中重复的元素-I#
核心思想 注意是升序,故不存在跳跃式重复 三刷的时候,发现老不对,回头看前几次的答案,发现对比相等时必须用 ->val 代码 /** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言...
C
2022-01-21
0
449
首页
上一页
1
2
3
下一页
末页