LeetCode刷题笔记-数据结构-day13 柔光的暖阳◎ 2023-10-01 16:52 16阅读 0赞 #### 文章目录 #### * LeetCode刷题笔记-数据结构-day13 * * 25. K 个一组翻转链表 * * 1.题目描述 * 2.解题思路 * 3.代码 * 143. 重排链表 * * 1.题目描述 * 2.解题思路 * 3.代码 ## LeetCode刷题笔记-数据结构-day13 ## ### 25. K 个一组翻转链表 ### #### 1.题目描述 #### > 原题链接:[25. K 个一组翻转链表][25. K] ![image-20220127094934715][] ![image-20220127094958211][] #### 2.解题思路 #### 我们可以考虑分这几步: 1. 增加虚拟头节点,方便后续操作 2. 判断接下来的一段个数是否大于等于k 3. 如果满足2,将这段进行反序 4. 将倒序后的尾节点指向下一段的头节点 5. 将p指针的next更新为倒序后的头部 6. 更新p为倒序后的尾部,进行下一个反序操作 #### 3.代码 #### class Solution { public: ListNode* reverseKGroup(ListNode* head, int k) { ListNode* dummy=new ListNode(-1); dummy->next=head; for(auto p=dummy;;){ auto t=p; //2 for(int i=0;i<k&&t;i++) t=t->next; if(!t) break; auto a=p->next,b=a->next; //3 for(int i=0;i<k-1;i++){ auto c=b->next; b->next=a; a=b,b=c; } auto c=p->next; //4 c->next=b; //5 p->next=a; //6 p=c; } return dummy->next; } }; ### 143. 重排链表 ### #### 1.题目描述 #### > 原题链接:[143. 重排链表][143.] ![image-20220127103344032][] ![image-20220127103401156][] #### 2.解题思路 #### 根据题目的意思我们可以用以下方法: 假设初始的链表是 `L1→L2→L3→…→LnL1→L2→L3→…→Ln`。 1. 将后半段的指针都反向,变成:`L1→L2→L3→…→L⌈n/2⌉←L⌈n/2⌉+1←…←Ln` 2. 用两个指针分别从1和n开始往中间扫描,将后半段交替插入到前半段,变成:`L1→Ln→L2→Ln−1→…` 模拟,这里分几步: 1. 先求出链表的总长度 2. 然后将后半段链表反向 3. 最后将后半段和前半段一起遍历,融入前半段 #### 3.代码 #### class Solution { public: void reorderList(ListNode* head) { int n=0; //求出链表总长度 for(auto t=head;t;t=t->next) n++; if(n<=2) return; auto later=head; //找出中心点 for(int i=0;i+1<(n+1)/2;i++) later=later->next; auto a=later,b=a->next; //将后半段翻转 while(b){ auto c=b->next; b->next=a; a=b,b=c; } later->next=nullptr; //将后半段交替插入到前半段 while(head&&head!=a){ b=a->next; a->next=head->next; head->next=a; head=head->next->next; a=b; } } }; ![在这里插入图片描述][watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBATEwuTEVCUk9O_size_20_color_FFFFFF_t_70_g_se_x_16] [25. K]: https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ [image-20220127094934715]: https://img-blog.csdnimg.cn/img_convert/0c57b425fb7aeef0f15d8ed3c1bdabb0.png [image-20220127094958211]: https://img-blog.csdnimg.cn/img_convert/0d5d51adeb022c5311165c99ddb3a5b8.png [143.]: https://leetcode-cn.com/problems/reorder-list/ [image-20220127103344032]: https://img-blog.csdnimg.cn/img_convert/6d4e2bcd3af1788f5cc8b2449a1949a7.png [image-20220127103401156]: https://img-blog.csdnimg.cn/img_convert/2d0bfb43f19439d72c38b748c473387d.png [watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBATEwuTEVCUk9O_size_20_color_FFFFFF_t_70_g_se_x_16]: https://img-blog.csdnimg.cn/6824e777ad80419b9b4d90ce502a8e27.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATEwuTEVCUk9O,size_20,color_FFFFFF,t_70,g_se,x_16
相关 刷题DAY13 题目一 手撕mannacher算法 总之是找最长回文字符串 最暴力的解法是什么呢 你就枚举每一个字符 往左右扩 看它每步一不一样 但是这个恶心在哪呢 1221这样的 谁践踏了优雅/ 2023年10月14日 10:47/ 0 赞/ 79 阅读
相关 LeetCode刷题笔记-动态规划-day6 文章目录 LeetCode刷题笔记-动态规划-day6 152. 乘积最大子数组 1.题目 2.解题思路 我会带着你远行/ 2023年10月01日 18:12/ 0 赞/ 16 阅读
相关 LeetCode刷题笔记-动态规划-day3 文章目录 LeetCode刷题笔记-动态规划-day3 198. 打家劫舍 1.题目 2.解题思路 布满荆棘的人生/ 2023年10月01日 17:30/ 0 赞/ 19 阅读
相关 LeetCode刷题笔记-数据结构-day20 文章目录 LeetCode刷题笔记-数据结构-day20 215. 数组中的第K个最大元素 1.题目 2.解题 男娘i/ 2023年10月01日 17:06/ 0 赞/ 11 阅读
相关 LeetCode刷题笔记-数据结构-day18 文章目录 LeetCode刷题笔记-数据结构-day18 236. 二叉树的最近公共祖先 1.题目描述 2.解 蔚落/ 2023年10月01日 17:05/ 0 赞/ 27 阅读
相关 LeetCode刷题笔记-数据结构-day16 文章目录 LeetCode刷题笔记-数据结构-day16 199. 二叉树的右视图 1.题目描述 2.解题思路 电玩女神/ 2023年10月01日 17:03/ 0 赞/ 49 阅读
相关 LeetCode刷题笔记-数据结构-day13 文章目录 LeetCode刷题笔记-数据结构-day13 25. K 个一组翻转链表 1.题目描述 2.解题思 柔光的暖阳◎/ 2023年10月01日 16:52/ 0 赞/ 17 阅读
相关 LeetCode刷题笔记-数据结构-day9 文章目录 LeetCode刷题笔记-数据结构-day9 187.重复的DNA序列 1.题目描述 2.解题思路 骑猪看日落/ 2023年10月01日 16:28/ 0 赞/ 24 阅读
相关 LeetCode刷题笔记-数据结构-day8 文章目录 LeetCode刷题笔记-数据结构-day8 49.字母异位词分组 1.题目描述 2.解题思路 ゝ一世哀愁。/ 2023年10月01日 16:10/ 0 赞/ 23 阅读
相关 LeetCode刷题笔记-数据结构-day7 文章目录 LeetCode刷题笔记-数据结构-day7 90.单词规律 1.题目描述 2.解题思路 悠悠/ 2023年10月01日 16:02/ 0 赞/ 46 阅读
还没有评论,来说两句吧...