区块链技术博客
www.b2bchain.cn

K个一组反转链表

这篇文章主要介绍了K个一组反转链表,通过具体代码讲解7722并且分析了K个一组反转链表的详细步骤与相关技巧,需要的朋友可以参考下

本文实例讲述了K个一组反转链表。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/?p=7722。具体如下:

 //给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。  // // k 是一个正整数,它的值小于或等于链表的长度。  // // 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。  // //  // // 示例:  // // 给你这个链表:1->2->3->4->5  // // 当 k = 2 时,应当返回: 2->1->4->3->5  // // 当 k = 3 时,应当返回: 3->2->1->4->5  // //  // // 说明:  // //  // 你的算法只能使用常数的额外空间。  // 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。  //  // Related Topics 链表   //leetcode submit region begin(Prohibit modification and deletion) /**  * 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 dummy=new ListNode(-1);        //赋值        dummy.next=head;        ListNode pre=dummy;        ListNode end=dummy;         while(end.next!=null){            for (int i = 0; i <k && end!=null ; i++) {                end=end.next;            }            //结束条件            if(end==null) break;            ListNode tail=end.next;            ListNode start=pre.next;            end.next=null;            pre.next=rev(start);            start.next=tail;             pre=start;            end=pre;        }        return dummy.next;     }      private ListNode rev(ListNode head){         ListNode cur=null;         ListNode pre=head;         while(pre!=null){             ListNode t=pre.next;             pre.next=cur;             cur=pre;             pre=t;         }         return cur;     } } //leetcode submit region end(Prohibit modification and deletion) 

 

本文地址https://www.b2bchain.cn/?p=7722

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » K个一组反转链表
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们