题目:
Given a linked list, remove thenthnode 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:
Givennwill always be valid.
Try to do this in one pass.
翻译:
给你一个链表,移除倒数第N个节点。
思路:
这道题难度还行,就是一些细节的方面,首先可能链表就一个节点。其次有可能被删除的是第一个节点。最后就是删除该节点后节点的连接。
代码:
public ListNode removeNthFromEnd(ListNode head, int n) {
if(head==null||(head.next == null && n ==1))
return null;
ListNode p = head;
ListNode q = head;
ListNode pre = head;
while(n!=1)
{
q = q.next;
n--;
}
while(q.next!=null)
{
pre = p;
q = q.next;
p = p.next;
}
if(pre.next == p.next)
head = head.next;
else
pre.next = p.next;
return head;
}
我采用的办法是两个指针p,q,q先遍历到n-1的位置,然后两个指针同时向后遍历,直到q到结尾,此时p为应该删去的。同时来个指针指向p的前一个。
如果p 和pre 指向的是同一个节点,说明此时删去的是 第一个元素。因为上一部q.next==null,这是只要把头结点指向他下一个节点即可。
如果p和pre不等,则直接删除p
分享到:
相关推荐
19.Remove_Nth_Node_From_End_of_List删除链表的倒数第N个节点【LeetCode单题讲解系列】
Remove Nth Node From End of List LeetCode 42 Trapping Rain Water LeetCode 61 RotateList LeetCode 75 Sort Colors LeetCode 125 Valid Palindrome LeetCode 167 Two Sum II - Input array is sorted LeetCode ...
19. Remove Nth Node From End of List 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate Parentheses 23. Merge k Sorted Lists 24. Swap Nodes in Pairs 25. Reverse Nodes in k-Group 26. Remove ...
题目来源:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了...
c语言 c语言_c语言编程基础之leetcode题解第19题删除链表的倒数第N个结点
c++ c++_c++编程基础之leetcode题解第19题删除链表的倒数第N个结点
# 删除链表的倒数第N个节点 题目链接给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和
python_leetcode面试题解之第19题删除链表的倒数第N个结点
java面试 java面试_leetcode面试题解之第19题删除链表的倒数第N个结点
leetcode括号生成python leetcode 打算开始在leetcode上...大体上来说就是删除链表中倒数第n个元素, 并没有任何难度。 这种程度的题也不管你内存回收什么的所以说随便写就好了。 唯一要注意的地方是 n 等于链表长度的
19. 删除链表的倒数第N个节点原题链接:19. 删除链表的倒数第N个节点先行N+1步骤法解题思路我们可以设想假设设定了双指针slow和fast的话,当fast
python python_leetcode面试题解之删除链表的倒数第N个节点
19 删除链表的倒数第N个节点一、题目给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n
leetcode 2 Leetcode答案集 关于项目: 本项目包含本人LeetCode解题的答案,全部将由JavaScript语言进行解答。并会在每个题目的文件夹中添加相关的思路解析。 详情 # Title Solution Time Space Difficulty 1 Two ...
19. 删除链表的倒数第N个节点 难度: 中等 题目分析: 链表中的题目,指针相当于免费资源,可以根据需要增加。双指针法、快慢指针法在环形链表,应用很多。 解法一: # 对于这种题目,循环结束条件设为快指针到达...
扔鸡蛋 leetcode LeetCode-Note-Mary Mary's ...List(删除链表的倒数第N个节点) 153. Find Minimum in Rotated Sorted Array(寻找旋转排序数组中的最小值) 2020/12/09 300. Longest Increasing
LeetCode Remove Duplicates from Sorted Array解决方案
删除链表倒数第N个节点 Remove Nth Node From End of List Medium 21 合并两个有序链表 Merge Two Sorted Lists Easy 141 判断链表是是否存在环 Linked List Cycle Easy 142 环形链表II Linked List Cycle I
leetcode 316 leetcode 题解更新脚本 用于快速的更新题解、同步leetcode的做题情况。 题解见: 文件名 用途 add_to_blog_solution_table.py 添加题解地址or题解语言到表格,能同步leetcode新题情况 blog_solution_...
(https://leetcode.com/problems/remove-duplicates-from-sorted-array/)| [C++](./C++/remove-duplicates-from-sorted-array.cpp) [Python](./Python/remove-duplicates-from-sorted-array.py) | _O(n)_ | _O(1)_ |...