• LeetCode | 19. 删除链表的倒数第N个节点


    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.
    
    当删除了倒数第二个节点后,链表变为 1->2->3->5.
    

    说明:

    给定的 n 保证是有效的。

    进阶:

    你能尝试使用一趟扫描实现吗?

    解法:

    老实用快慢指针,快指针先走n步,然后快慢一起走,直到快指针走到最后,要注意的是可能是要删除第一个节点,这个时候可以直接返回head -> next

    class Solution {
    public:
        ListNode* removeNthFromEnd(ListNode* head, int n) {
            if(!head | !head -> next) return NULL;
            ListNode * fast = head, *slow = head;
            for(int i = 0; i < n; i++){
                fast = fast -> next;
            }
            if(!fast){
                return head -> next;    
            }
            
            while(fast -> next){
                fast = fast -> next;
                slow = slow -> next;
            }
            slow -> next = slow -> next -> next;
            return head;
        }
    };
    
  • 相关阅读:
    go 基本类型
    slice底层实现
    数组Array
    GO内置类型和函数
    python 操作es
    go 相关命令
    Init函数和main函数
    切片
    RecursionError: maximum recursion depth exceeded
    多项式工业基础与全家桶
  • 原文地址:https://www.cnblogs.com/RioTian/p/12536485.html
Copyright © 2020-2023  润新知