苏璃陌

文章 评论 浏览 30

苏璃陌 2022-05-04 13:53:50
type ListNodes = {
  val?: number,
  new_next?: ListNodes | null,
  next?: ListNodes | null
}

function listReverse(list: ListNodes, k: number): ListNodes {
  let result: ListNodes = {}
  let prevNode: ListNodes = null
  let connector: ListNodes = null
  let to_be_connector: ListNodes = null
  let count: number = 1
  let is_first_flag = true
  while (list !== null) {
    list.new_next = prevNode
    if (count === 1) {
      if (is_first_flag) {
        connector = list
      } else {
        to_be_connector = list
      }
      list.new_next = null
    }
    prevNode = list
    if (count === k) {
      count = 1
      if (is_first_flag) {
        result.new_next = list
        is_first_flag = !is_first_flag
      } else {
        connector.new_next = list
        connector = to_be_connector
      }
    } else {
      count ++
    }
    list = list.next
  }
  if (count < k) {
    connector.new_next = to_be_connector
    while (to_be_connector !== null) {
      to_be_connector.new_next = to_be_connector.next
      to_be_connector = to_be_connector.next
    }
  }
  return result.new_next
}

const l: ListNodes = {
  val: 1,
  next: {
    val: 2,
    next: {
      val: 3,
      next: {
        val: 4,
        next: {
          val: 5,
          next: {
            val: 6,
            next: {
              val: 7,
              next: {
                val: 8,
                next: {
                  val: 9,
                  next: {
                    val: 10,
                    next: null
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

console.log(listReverse(l, 4))

第 138 题:反转链表,每 k 个节点反转一次,不足 k 就保持原有顺序

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文