LeetCode_Remove Nth Node From End of List

来源:互联网 发布:java大学简明教程下载 编辑:程序博客网 时间:2024/04/27 18:01

题目:

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

For example,

   Given linked list: 1->2->3->4->5, and n = 2.   After removing the second node from the end, the linked list becomes 1->2->3->5.

Note:
Given n will always be valid.
Try to do this in one pass

解释:题目中给出一个链表,要求把倒数第n个节点删除,输出新的链表。

已知:题目还给出了节点的结构,在下面显示。

分析:只需要设置两个指针(Java中没有指针,暂且形象地这么叫),一个left,一个right,使得left和right相距正好为n,那么,只要当right移动到链表末尾的时候,left正好在倒数第n个位置(其实应该移动到倒数第n+1个位置,因为涉及到.next.next的操作),这样就可以使用left.next=left.next.next这个常用的节点删除操作了。

Java解题:

题目已给出的Node结构:

public class ListNode {int val;ListNode next;ListNode(int x) { val = x; }}
解题:

public ListNode removeNthFromEnd(ListNode head, int n) {        ListNode left = head;ListNode right = head;while(n>0){if(right.next==null)return head.next;right=right.next;n--;}while(right.next!=null){right=right.next;left=left.next;}left.next=left.next.next;return head;    }


0 0
原创粉丝点击