当前位置: 代码迷 >> 综合 >> 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针
  详细解决方案

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

热度:9   发布时间:2024-02-24 07:35:47.0

题目描述

给定一个链表,删除链表的倒数第n个节点并返回链表的头指针
例如,

 给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1->2->3->5.

备注:

题目保证n一定是有效的
请给出请给出时间复杂度为\ O(n) O(n)的算法

 

示例1

输入

{1,2},2

输出

{2}

 

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;* }*/public class Solution {/*** * @param head ListNode类 * @param n int整型 * @return ListNode类*/public ListNode removeNthFromEnd (ListNode head, int n) {// write code hereint len = 0;ListNode curNode = head;while(curNode!=null){len++;curNode = curNode.next;}//如果要删除逆向的n位置 是链表的头节点 直接返回next节点 如:{1,2} n=2 直接返回2if(len == n){return head.next;}//正向顺序 被删除节点的前一个节点int targetPos = len - n;int tmpPos = 0;ListNode tmpNode = head;while(tmpNode!=null){tmpPos++;//正向顺序 被删除节点的前一个节点if(tmpPos == targetPos){tmpNode.next = tmpNode.next.next;break;}tmpNode = tmpNode.next;}return head;}
}

 

  相关解决方案