美文网首页
快慢指针 03

快慢指针 03

作者: 眼若繁星丶 | 来源:发表于2020-10-18 20:34 被阅读0次

快慢指针 03


0j1XlR.png

https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

快慢指针解法

快指针先跑n个节点,如果跑到null了,说明此时慢指针就在倒数第n的位置,直接删除,即返回head的下一个元素即可。

没跑到null,则两指针一起跑,直到fast跑到null,然后通过slow删掉节点,返回head即可

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if (head == null || head.next == null) return null;
        ListNode fast = head, slow = head;

        for (int i = 0; i < n; i++) {
            fast = fast.next;
        }
        if (fast == null) {
            return head.next;
        }

        while (fast.next != null) {
            fast = fast.next;
            slow = slow.next;
        }
        slow.next = slow.next.next;
        return head;
    }
}

相关文章

  • 快慢指针 03

    快慢指针 03 https://leetcode-cn.com/problems/remove-nth-node-...

  • 快慢指针的应用

    快慢指针 快慢指针中的快慢指的是移动的步长,快慢分别指的是快指针每次移动两步,满指针每次移动一步 快慢指针的应用 ...

  • 快慢指针总结

    快慢指针 所谓「快慢指针」是指设定两个指针,其中快的指针的移动速度是慢的指针的移动速度的两倍;“快慢指针”方法主要...

  • leetcode第142题:环形链表II [中等]

    题目描述 考点 链表 双指针(快慢指针) 解题思路 设置快慢指针slow, fast; 慢指针slow每次移动一个...

  • 快慢指针

    快慢指针即我们有两个及以上的指针,我们可以通过控制其步长去实现某种行为。 下图中自定义的名词解释如下: 目标节点:...

  • 快慢指针

    找出单向链表中倒数第 k 个节点。返回该节点的值普通解法时间复杂度2N 用快慢指针只用循环一遍N就行了

  • 快慢指针

  • 链表算法之-链表找环

    思想:快慢指针

  • [go语言算法] 输出链表的倒数第k个节点

    快慢指针法

  • 快慢指针的应用

    快慢指针的快慢主要是指在遍历链表过程中指针移动速度的快慢。比如遍历单链表,我们可以让指针每次移动一个节点,也可以让...

网友评论

      本文标题:快慢指针 03

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