记录leecode刷题思路

19. 删除链表的倒数第 N 个结点

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

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

思路一:

首先一般的想法为先得到链表的长度length,然后通过长度找到需要跳过的点的前一个(length-n-1),进行跳转

class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode listNode = head;
int length =0;
while (listNode!=null){
length++;
listNode=listNode.next;
}
if(length-n==0){
return head.next;
}
listNode =head;
for(int i=0;i<length;i++){
if(i==length-n-1){
listNode.next = listNode.next.next;
break;
}
listNode =listNode.next;
} return head;
}
}

思路二:双指针

  • 首先将fast指针先移动n个位置
  • 然后同时移动fast、slow指针,这样能够保证两者之间的间距为n
  • 当fast指针移动到链表结尾处时,slow指针的下一个正好是需要删除的节点
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode fast = head;
ListNode slow =head;
while (n--!=0){
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; }
}

leecode 19 快慢指针的更多相关文章

  1. 力扣Leetcode 202. 快乐数 -快慢指针 快乐就完事了

    快乐数 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不 ...

  2. java数据结构面试问题—快慢指针问题

    上次我们学习了环形链表的数据结构,那么接下来我们来一起看看下面的问题, 判断一个单向链表是否是环形链表? 看到这个问题,有人就提出了进行遍历链表,记住第一元素,当我们遍历后元素再次出现则是说明是环形链 ...

  3. c 链表之 快慢指针 查找循环节点

    参考:http://blog.csdn.net/wenqian1991/article/details/17452715 上面分析了 根据这张图 推倒出 数学公式. 刚接触 不能一下弄明白.下面结合上 ...

  4. LeetCode OJ 143. Reorder List(两种方法,快慢指针,堆栈)

    Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do thi ...

  5. Faster\Slower 快慢指针的应用

    leetcode很多题目都是利用快慢指针来解决题目,下面具体讲解下快慢指针. 概念: 快指针在每一步走的步长要比慢指针一步走的步长要多.快指针通常的步速是慢指针的2倍.在循环中的指针移动通常为:fas ...

  6. 【算法分析】如何理解快慢指针?判断linked list中是否有环、找到环的起始节点位置。以Leetcode 141. Linked List Cycle, 142. Linked List Cycle II 为例Python实现

    引入 快慢指针经常用于链表(linked list)中环(Cycle)相关的问题.LeetCode中对应题目分别是: 141. Linked List Cycle 判断linked list中是否有环 ...

  7. [LeetCode] Remove Nth Node From End of List 快慢指针

    Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...

  8. reorder-list——链表、快慢指针、逆转链表、链表合并

    Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do thi ...

  9. c 链表之 快慢指针 查找循环节点(转)

    上面分析了 根据这张图 推倒出 数学公式. 刚接触 不能一下弄明白.下面结合上面文章的分析.仔细推倒一下 , 一般设置 快指针 速度是 慢指针的2倍.及 快指针每次遍历两个指针, 慢指针每次遍历1个指 ...

  10. sort-list——链表、快慢指针找中间、归并排序

    Sort a linked list in O(n log n) time using constant space complexity. 链表,快慢指针找中点,归并排序. 注意判断条件fast-& ...

随机推荐

  1. C 数值类型与字节数组相互转化

    C 数据类型与字节数组相互转化 uint16_t -> bytes uint8_t uint16_t2bytes(uint8_t* buffer, uint16_t data) { if(buf ...

  2. win10:你需要来自XXXX的权限才能对此文件夹进行更改

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/16769720.html 起因 软件运行失败,看报错信息是删除某个文件夹失败了,行吧,我自己来删.找到目标文 ...

  3. shell脚本实战笔录-在PATH中查找程序

    #!/bin/bashin_path(){ cmd=$1        ourpath=$2         result=1 #将默认的IFS(分隔符)为空格,这里先保留原本的给变量oldIFS,然 ...

  4. PY3多继承

    __author__ = "Alex Li"class A: def __init__(self): print("A")class B(A): pass #d ...

  5. vue3 门户网站搭建6-wangeditor

    门户网站的新闻.公告等文章,内容可配置,故引入 wagneditor 1.安装: npm i wangeditor 2.方便调用,抽成组件: <template> <div ref= ...

  6. Linux编译安装中的--prefix

    本文主要说明--prefix参数的作用,其主要用在编译安装源代码应用中的./configure环节. 1.源码安装一般包括几个步骤:配置(configure),编译(make),安装(make ins ...

  7. yarn 更新依赖包

    yarn upgrade --latest 其他的以后再记录.

  8. 在windows上远程linux (待完善)

    一.准备工具   windows linux 系统 win10 centos7 软件 远程桌面连接(自带) xrdp(epel库提供):开源的远程桌面协议(RDP)服务 二.Linux(被连接端) 2 ...

  9. C# 子类与父类互转注意项

    昨晚在处理父类与子类相互转换时,想把父类转换子类对象,发现编译不通过 ,类定义如下: public interface IPeople { int Age { get; set; } string N ...

  10. nginx,git,maven面试题

    1.简述一下什么是Nginx,它有什么优势和功能? Nginx是一个web服务器和方向代理服务器,用于HTTP.HTTPS.SMTP.POP3和IMAP协议.因 它的稳定性.丰富的功能集.示例配置文件 ...