Skip to content

Latest commit

 

History

History
68 lines (56 loc) · 1.82 KB

25.md

File metadata and controls

68 lines (56 loc) · 1.82 KB

✏️Leetcode之PHP版题目解析(25. Reverse Nodes in k-Group)

2019-10-02 吴亲库里 库里的深夜食堂


✏️描述

给定一个链表,以k为一组,翻转链表,返回新的链表。如果当前链表节点数不足k的时候那就不必翻转了。


✏️题目实例

****

✏️题目分析

既然k决定了每次翻转的个数,以及最后不需要翻转的元素。我们可以先求出链表元素的个数。这个作为判断依据,每次翻转当前范围内的链表,记录最后的位置。


✏️解法一

/**
 * Definition for a singly-linked list.
 * class ListNode {
 *     public $val = 0;
 *     public $next = null;
 *     function __construct($val) { $this->val = $val; }
 * }
 */
class Solution {

    /**
     * @param ListNode $head
     * @param Integer $k
     * @return ListNode
     */
    function reverseKGroup($head, $k) {
        $dummy=new ListNode(-1);
        $pre=$cur=$dummy;
        $dummy->next=$head;
        $num=0;
        while($cur=$cur->next) ++$num;
        while($num>=$k){
            $cur=$pre->next;  
            for($i=1;$i<$k;++$i){
                $t=$cur->next; 
                $cur->next=$t->next; 
                $t->next=$pre->next; 
                $pre->next=$t;
         }
            $pre=$cur;
            $num -=$k;
        }
        return $dummy->next;
        
    }
}

联系