文章 评论 浏览 30
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))
文章 0 评论 0
接受
第 138 题:反转链表,每 k 个节点反转一次,不足 k 就保持原有顺序