Advertisement

随笔-反转链表每k个节点(高效解法)

阅读量:

题目:给出一个链表,每 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 {
    ListNode newTail=null;
    public void reverse(ListNode head,ListNode tail){
     //head为头结点,不带有任

全部评论 (0)

还没有任何评论哟~