LeetCode算法练习(删除链表的倒数第N个节点)
2018-03-30 17:02
351 查看
题目:
给定一个链表,删除链表的倒数第 n 个节点并返回头结点。例如,
给定一个链表: 1->2->3->4->5, 并且 n = 2.
当删除了倒数第二个节点后链表变成了 1->2->3->5.
说明:
给的 n 始终是有效的。
尝试一次遍历实现。
我的正确解答:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { //链表长度小于0的情况 if(head==null) return null; //计算链表长度 int len = 0; ListNode temp = head; while(temp.next!=null){ temp = temp.next; len++; } //链表长度小于n的情况 if((len+1)<n) return temp; //链表长度为1且删除第一个元素的情况 if(len==0 && n==1) return null; //删除第一个元素的情况 if((len+1) == n){ return head.next; } //其他情况 int index = len - n + 1; ListNode temp2 = head; int count = 0; //遍历到被删除节点的前一个节点,将前一个节点的next指向被删除节点的后一个节点,以达到删除的效果 while((index-1) != count){ temp2 = temp2.next; count++; } temp2.next = temp2.next.next; return head; } }
相关文章推荐
- [LeetCode]—Remove Nth Node From End of List 删除链表的倒数第n个节点
- LintCode : 删除链表中倒数第n个节点
- #19 Remove Nth Node From End of List(删除链表倒数第N个节点)
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- 删除链表中倒数第N个节点
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点 - C++
- lintcode 容易题:Remove Nth Node From End of Lis 删除链表中倒数第n个节点
- leetcode19--删除链表中倒数第n个节点
- 174. 删除链表中倒数第n个节点 (remove-nth-node-from-end-of-list)(c++)----lintcode面试题之链表
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 174删除链表中倒数第n个节点
- [LintCode] 删除链表中倒数第n个节点
- [LeetCode] 19. Remove Nth Node From End of List 删除链表的倒数第N个节点 @python
- LeetCode 从链表中删除倒数第N个节点
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点