19.删除链表的倒数第-n-个结点
小于 1 分钟
19.删除链表的倒数第-n-个结点
/*
* @lc app=leetcode.cn id=19 lang=typescript
*
* [19] 删除链表的倒数第 N 个结点
*/
// @lc code=start
/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
let len = 0; // 计算长度
let current = head;
while (current) {
len++;
current = current.next;
}
let tag = len - n;
let newNode = new ListNode(0, head); // 保底
let cur = head as ListNode;
let p = newNode;
let index = 0;
while (index <= tag) {
if (index == tag) {
// 找到位置
p.next = cur.next;
return newNode.next;
}
p = cur;
cur = cur.next as ListNode;
index++;
}
return null;
}
class ListNode {
val: number;
next: ListNode | null;
constructor(val?: number, next?: ListNode | null) {
this.val = val === undefined ? 0 : val;
this.next = next === undefined ? null : next;
}
}
let listTag1 = new ListNode(1);
let listTag2 = new ListNode(2);
// let listTag3 = new ListNode(4);
// let listTag4 = new ListNode(7);
// let listTag5 = new ListNode(1);
// let listTag6 = new ListNode(2);
// let listTag7 = new ListNode(6);
listTag1.next = listTag2;
// listTag2.next = listTag3;
// listTag3.next = listTag3;
// listTag4.next = listTag5;
// listTag5.next = listTag6;
// listTag6.next = listTag7;
console.log(removeNthFromEnd(listTag1, 2));
// @lc code=end
Loading...
