天津建设发展总公司网站,彩票网站开发多少钱,山东大学信息服务平台,文档阅读网站模板下载题目 给你链表的头节点 head #xff0c;每 k 个节点一组进行翻转#xff0c;请你返回修改后的链表。 k 是一个正整数#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的…题目 给你链表的头节点 head 每 k 个节点一组进行翻转请你返回修改后的链表。 k 是一个正整数它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值而是需要实际进行节点交换。 解题思路
先排除特殊情况k1即不用翻转节点为null则当前函数内也不需要翻转统计是否有k个数据来判断是否需要翻转通过while循环对k个节点进行翻转尾节点传入下一次递归当中返回首节点并赋值给上一个尾节点的next。
代码展示
class Solution {public ListNode reverseKGroup(ListNode head, int k) {if(k 1){return head;}if(head null){return null;}int index 1;ListNode end head.next;//判断是否需要继续翻转boolean status false;while (end ! null){index;if(index k){status true;break;}//递归需要传递的数据end end.next;}if(status){ListNode before end.next;ListNode now head;index 0;while (index k){ListNode temp now.next;now.next before;before now;now temp;index;}head.next reverseKGroup(head.next, k);} else {return head;}return end;}
}