算法通关村第2关【黄金】| k个一组翻转链表

算法通关村第2关【黄金】| k个一组翻转链表_第1张图片

头插法 

思路:和反转链表II一样的反转方法,关键是将一个指定区间变成n个长度为k的指定区间,首先算出可以分成几组,然后分别反转就可以了,反转过程有些细节需要仔细考虑。

class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        ListNode vHead = new ListNode(-1);
        vHead.next = head;
        ListNode cur = head;
        int len = 0;
        while(cur != null){
            len++;
            cur = cur.next;
        }
        cur = head;
        int n = len/k;
        ListNode pre = vHead;
        ListNode next = cur.next;
        ListNode p = vHead;
        for(int i = 0;i < n ; i++){
            p = cur;
            for(int j = 0;j

你可能感兴趣的:(算法,链表,数据结构)