博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:19. Remove Nth Node From End of List(Medium)
阅读量:6537 次
发布时间:2019-06-24

本文共 1755 字,大约阅读时间需要 5 分钟。

1. 原题链接

2. 题目要求

给出一个链表,请删除倒数第n个结点并返回头节点

注意:给出的n总在合法范围内;只用一次遍历

3. 解题思路

删除倒数第n个结点,正着数即删除从表头结点开始的第L-n+1个结点。创建一个表头结点来指向头结点。

思路一:使用两次遍历。第一次遍历得到链表的长度,第二遍历删除第L-n+1个结点。

思路二:使用一次遍历。使用两个指针first和second,开始时first和second都指向头结点head。first指针先到达正数第n个结点,second指针不动。然后两个指针同步向后移动,保持两个指针之间的gap为n。当first.next==null时,second指针指向倒数第n个结点。

4. 代码实现

 

package com.huiAlex;import java.util.List;/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class RemoveNthNodeFromEndofList19 {    public static void main(String[] args) {        ListNode l1 = new ListNode(1);        ListNode l2= new ListNode(2);        ListNode l3 = new ListNode(3);        ListNode l4= new ListNode(4);        ListNode l5 = new ListNode(5);        ListNode l6= new ListNode(6);        l1.next=l2;        l2.next =l3;        l3.next=l4;        l4.next=l5;        l5.next=l6;        ListNode ls = RemoveNthNodeFromEndofList19.removeNthFromEnd(l1,3);        ListNode ls2 = l1.next.next.next;        System.out.println("头结点:"+ls.val);   // Expected:1        System.out.println("删除nth结点后,其前驱结点的后继结点"+ls2.val);  // Expected:5    }    // 思路二代码实现    public static ListNode removeNthFromEnd(ListNode head, int n){        ListNode headPointer = new ListNode(0);        headPointer.next = head;        ListNode first = head,second = head;        for(int i =0;i
0) { // 第二次遍历找到倒数第n个结点 length--; first = first.next; } first.next = first.next.next; // 删除倒数第n个结点 return headPointer.next; } public static class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }}

  

转载于:https://www.cnblogs.com/huiAlex/p/8097422.html

你可能感兴趣的文章
[转]分享2011年8个最新的jQuery Mobile在线教程
查看>>
android call require api level
查看>>
创建Visual Studio项目模版向导的几篇参考文章
查看>>
深入浅出SQL Server Replication第一篇:走近Replication(上)
查看>>
[TopCoder][SRM] SRM 562 DIV 2
查看>>
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
查看>>
LocalAlloc,VirtualAlloc,malloc,new的异同
查看>>
回调函数
查看>>
win7 x64 jdk1.7.0_51
查看>>
linux中利用iptables+geoip过滤指定IP
查看>>
在myeclipse中写sql语句的细节问题
查看>>
使用ShellExecute打开目标文件所在文件夹并选中目标文件
查看>>
HDU 4614 Vases and Flowers (2013多校2 1004 线段树)
查看>>
Minix中的字符判定ctype.c
查看>>
91平台iOS接入demo
查看>>
用js实现table内容从下到上连续滚动
查看>>
JVM学习笔记(一)------基本结构
查看>>
获得文件和文件夹的所有权
查看>>
Java相对路径读取文件
查看>>
PostgreSQL 商用版本EPAS(阿里云ppas) 自动(postgresql.conf)参数计算与适配功能
查看>>