LeetCode – Remove Nth Node From End of List (Java)
2016-09-19 14:32
375 查看
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Note:
Given n will always be valid.
Try to do this in one pass.
注意题目要求一趟完成(也就是只遍历一次),自己写了个两趟完成的方法如下:
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
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.
注意题目要求一趟完成(也就是只遍历一次),自己写了个两趟完成的方法如下:
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public class RemoveNodeFromList { //两趟完成,遍历两次 public ListNode removeNthFromEnd(ListNode head, int n) { if(head == null) { return head; } else if(head.next == null && n == 1) { return null; } //获取链表长度,先遍历一次 int length = 0; //链表长度 ListNode node1 = head; while(node1 != null) { length++; node1 = node1.next; } //再遍历第二次 ListNode node = head; for(int i = 1; i < length-n; i++) { node = node.next; } if(n == 1) { //如果删去最后一个结点 node.next = null; } else if(n == length) { //如果删除链表第一个结点 return head.next; } else { node.next = node.next.next; } return head; } //一趟完成,只遍历一次 //使用两个指针,node,secNode,第一个指针比第二个快n步,当node走到链表末尾时 //secNode刚好走了length-n步 public ListNode removeNthFromEnd2(ListNode head, int n) { ListNode node = head; for(int i = 0; i < n; i++) { node = node.next; } if(node == null) { //如果删除的是第一个元素 return head.next; } ListNode secNode = head; while(node.next != null) { secNode = secNode.next; node = node.next; } secNode.next = secNode.next.next; return head; } }
相关文章推荐
- Java [leetcode 19]Remove Nth Node From End of List
- LeetCode 19 : Remove Nth Node From End of List (Java)
- 19. Remove Nth Node From End of List leetcode java
- 【小熊刷题】Remove Nth Node From End of List <Leetcode 19, Java>
- 【JAVA、C++】LeetCode 019 Remove Nth Node From End of List
- Remove Nth Node From End of List leetcode java
- LeetCode 19之Remove Nth Node From End of List的Java题解(三种解法)
- 【LeetCode-面试算法经典-Java实现】【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】
- [LeetCode-Java]19. Remove Nth Node From End of List
- LeetCode 19 Remove Nth Node From End of List (C,C++,Java,Python)
- Leetcode:19. Remove Nth Node From End of List(JAVA)
- [leetcode]19. Remove Nth Node From End of List@Java解题报告
- LeetCode 19 — Remove Nth Node From End of List(C++ Java Python)
- Remove Nth Node From End of List leetcode java
- leetcode Remove Nth Node From End of List(Java)
- [LeetCode][Java] Remove Nth Node From End of List
- [Leetcode] Remove Nth Node From End of List (Java)
- leetcode:Remove Nth Node From End of List 【Java】
- LeetCode : Remove Nth Node From End of List [java]
- leetcode 19. Remove Nth Node From End of List---java