四川建设厅官方网站证件查询,wordpress音乐加载慢,小程序制作方案,学雷锋_做美德少年网站给出一个链表#xff0c;每 k 个节点一组进行翻转#xff0c;并返回翻转后的链表。 k 是一个正整数#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍#xff0c;那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表#xff1a;1-2-3-4…给出一个链表每 k 个节点一组进行翻转并返回翻转后的链表。 k 是一个正整数它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表1-2-3-4-5 当 k 2 时应当返回: 2-1-4-3-5 当 k 3 时应当返回: 3-2-1-4-5 说明 : 你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值而是需要实际的进行节点交换。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val x; }* }*/
class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode prev null;ListNode cur head;ListNode next null;ListNode check head;int canProceed 0;int count 0;// 检查链表长度是否满足翻转while (canProceed k check ! null) {check check.next;canProceed;}// 满足条件进行翻转if (canProceed k) {while (count k cur ! null) {next cur.next;cur.next prev;prev cur;cur next;count;}if (next ! null) {// head 为链表翻转后的尾节点head.next reverseKGroup(next, k);}// prev 为链表翻转后的头结点return prev;} else {// 不满住翻转条件直接返回 head 即可return head;}}
} 转载于:https://www.cnblogs.com/JAYPARK/p/10462768.html