题解 | #链表内指定区间反转#

链表中的节点每k个一组翻转

http://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e

import java.util.*;

/*

  • public class ListNode {
  • int val;
  • ListNode next = null;
  • } */

public class Solution { /** * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ public ListNode reverseKGroup (ListNode head, int k) { // write code here ListNode dummyNode = new ListNode(-1); // 设置虚拟头结点 dummyNode.next = head;

    ListNode pre = dummyNode; // pre指向待翻转链表的前一个结点
    
    // 翻转k个结点
    while (findK(pre, k)) {
        head = pre.next;
        for (int i = 1; i < k; i++) {
            ListNode next = head.next;
            head.next = next.next;
            next.next = pre.next;
            pre.next = next;
        }
        pre = head; // 翻转完k个之后,修改pre指向的结点
    }
    
    return dummyNode.next;
}
// 查看是否还剩下k个结点
public boolean findK(ListNode pre, int k) {
    for (int i = 0; i < k; i++) {
        pre = pre.next;
        if (pre == null) {
            return false;
        }
    }
    return true;
}

}

全部评论

相关推荐

昨天 18:05
门头沟学院 Java
挂了&nbsp;正式批求捞
投递滴滴等公司9个岗位
点赞 评论 收藏
分享
苍蓝星上艾露:这简历。。。可以试试我写的开源简历优化工具https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
07-07 12:47
门头沟学院 Java
码农索隆:竟然还真有卡体检报告的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务