美文网首页
leetCode-25 《K 个一组翻转链表》

leetCode-25 《K 个一组翻转链表》

作者: TouchMe丶 | 来源:发表于2020-12-10 16:00 被阅读0次

题目

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序

示例

给你这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5

说明

  1. 你的算法只能使用常数的额外空间。
  2. 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

解析

思路:

思路

理解:

  1. 链表氛围已翻转部分,待翻转部分和未翻转部分。
    2.每次要选取出相应部分进行相应处理。

代码

单链表翻转

// 单链表翻转 #leetCode 206
const reverse = (head) => {
  let pre = null
  let cur = head
  while (cur !== null){
    let next = cur.next
    cur.next = pre
    pre = cur
    cur = next
  }
  return pre
}

K个一组翻转

const reverseKGroup = (head, k) => {
  let dummy = new ListNode(null)
  dummy.next = head
  // 初始化prev 和 end
  let prev = dummy
  let end = dummy

  while (end.next !== null){
    for (let i = 0; i < k && end != null; i++) {
      end = end.next // 找到end的位置
    }
    if (end === null) break
    let start = prev.next // 找到当前需要的start位置
    let next = end.next // 暂存 end后面的
    end.next = null // 断开end和后面的链表
    let reversedList = reverse(start)
    prev.next = reversedList
    start.next = next
    prev = start
    end = prev
  }
  return dummy.next
}

相关文章

  • 25. K 个一组翻转链表

    K个一组反转链表 翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • K 个一组翻转链表(递归,Kotlin)

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • 【LeetCode】25.K个一组翻转链表

    题目描述 25.K个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k是一个正整数...

  • 【Leetcode】【链表】025-Reverse Nodes

    k个一组翻转链表 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于...

  • 25. k个一组翻转链表

    25.k个一组翻转链表 给出一个链表,每k个节点一组进行翻转,并返回翻转后的链表。 k是一个正整数,它的值小于或等...

  • 前端常见算法题(链表篇)

    一、反转问题 2021.02.11 No.25 K个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返...

  • leetCode-25 《K 个一组翻转链表》

    题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度...

  • LeetCode练习day4-链表相关

    LeetCode25 K个一组翻转链表 题目详情 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返...

  • [LeetCode]25、K个一组翻转链表

    题目描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表...

  • 25. K 个一组翻转链表

    一、题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表...

网友评论

      本文标题:leetCode-25 《K 个一组翻转链表》

      本文链接:https://www.haomeiwen.com/subject/ybkubktx.html