问题描述:
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.
原问题链接:https://leetcode.com/problems/remove-nth-node-from-end-of-list/
问题分析
这个问题相对来说比较简单。因为要删除链表中从后往前的第n个元素,所以需要用一个元素first的引用先往前n步,然后再用一个引用second跟着这个元素一步步到链表的最后。既然要删除这个倒数第n的元素,可以在第二个元素后面跟一个元素,相当于它的前置元素pre。这样在后面删除这个节点的时候只需要设置pre.next = second.next就可以。这里有几个需要判断和容易出错的地方在于,当head == null的情况,在前置元素first还没走n步就已经到链表末尾的情况。
在把上述情况都考虑在内很容易得到如下的代码:
public class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if(head == null || n < 1) return head; ListNode first = head, second = head, pre = null; for(int i = 0; i < n ; i ++) { if(first == null) return head; first = first.next; } while(first != null) { first = first.next; pre = second; second = second.next; } if(second == head) return second.next; pre.next = second.next; return head; } }
相关推荐
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 ...
c c语言_leetcode 0019_remove_nth_node_from_end_of_list.zip
java入门 java_leetcode题解之019_Remove_Nth_Node_From_End_of_List
js js_leetcode题解之19-remove-nth-node-from-end-of-list.js
c语言入门 C语言_leetcode题解之19-remove-nth-node-from-end-of-list.c
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. 大体上来说就是删除链表...
leetcode 2 Leetcode答案集 关于项目: 本项目包含本人LeetCode解题的答案,全部将由JavaScript语言进行解答。并会在每个题目的文件夹中添加相关的思路解析。 详情 # Title Solution Time Space Difficulty 1 Two ...
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 ...
2sum leetcode ...Remove_Nth_Node_From_End_of_List.cpp - invert_Binary_Tree.cpp - 对称树.cpp - BST_Or_Not.cpp - level_order_traversal.cpp - exponentiation_by_squaring.cpp - Maximum_Depth_B
例如,"两链表的交点"(Intersection of Two Linked Lists)要求找到两个链表的交点,或者"删除链表中的节点"(Remove Nth Node From End of List)需要删除链表的指定位置节点。 3. **字符串**:字符串处理题目...
leetcode 316 leetcode 题解更新脚本 用于快速的更新题解、同步leetcode的做题情况。 题解见: 文件名 用途 add_to_blog_solution_table.py 添加题解地址or题解语言到表格,能同步leetcode新题情况 blog_solution_...
* 从列表末尾删除第N个节点(Remove Nth Node From End of List):从链表末尾删除第N个节点。 5. 栈和队列操作: * 有效的括号(Valid Parentheses):判断括号是否有效。 * 生成括号(Generate Parentheses):...
lru缓存leetcode leetcode 我的 leetcode Javascript / Swift / Mysql 解决方案 典型问题 动态规划 子阵列 ..../topics/linked-list/remove-nth-node-from-end-of-list.md) 规则 常见的 分而治之 常见的
扔鸡蛋 leetcode LeetCode-Note-Mary Mary's ...List(删除链表的倒数第N个节点) 153. Find Minimum in Rotated Sorted Array(寻找旋转排序数组中的最小值) 2020/12/09 300. Longest Increasing
Remove Nth Node From End of List Swap Nodes in Pairs Spiral Matrix Path Sum II Copy List with Random Pointer Building H2O Fizz Buzz Multithreaded hard Merge k Sorted Lists Reverse Nodes in k-Group ...
java二叉树算法源码 ...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
lru cache leetcode #算法解题报告 主要记录我每天做的题目,包括leetcode, 剑指offer等在线编程平台,以前做过的等时间够再一起...19.Remove Nth Node From End of List 20.Valid Parentheses 21.Merge Two Sorted L
leetcode 跳跃 leetcode 数据结构和算法是一个程序员的基石,本仓库用于个人学习基本数据结构和算法。 序号 题目名称 难易程度 归类 备注 1 两数之和 数组 2 两数相加 中等 链表 3 无重复字符的最长子串 7 整数反转 ...
leetcode添加元素使和等于 programmer_practices algorithm practices 最优解Book: 双栈实现getMin Stack. 双栈实现Queue. 递归和栈实现逆序操作一个栈. 仅用一个栈排序另一个栈. 打印两个有序链表的公共部分. 删除...