原题链接:http://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/这道题是链表基本操作,主要问题就是如何得到链表的倒数第n个结点,应该是一个比较重要的routine,因为很多题目都要用这个subroutine。思路就是先用一个runner指针走n步,然后再来一个walker从头开始和runner同时向后走,当runner走到链表末尾的时候,walker指针即为倒数第n个结点。算法的时间复杂度是O(链表的长度),空间复杂度是O(1)。代码如下:
public ListNode removeNthFromEnd(ListNode head, int n) {
if(head == null)
return null;
int i=0;
ListNode runner = head;
while(runner!=null && i<n)
{
runner = runner.next;
i++;
}
if(i<n)
return head;
if(runner == null)
return head.next;
ListNode walker = head;
while(runner.next!=null)
{
walker = walker.next;
runner = runner.next;
}
walker.next = walker.next.next;
return head;
}
原题中假设n总是合法的,但是面试的时候最好不要做这种假设,或者至少要和面试官讨论一下。以上代码是如果n不合法,就直接返回链表头,也就是什么都不做。对于这种corner case,大家还是尽量考虑,因为题目比较简单,更多的只能去关注这些问题。
分享到:
相关推荐
19.Remove_Nth_Node_From_End_of_List删除链表的倒数第N个节点【LeetCode单题讲解系列】
LeetCode-Note-Mary Mary's leetcode notebook The order of problems will follow my summary in the following link: 2020/11/30 stack - easy 2020/12/01 stack - medium 2020/12/02 stack - medium other 2020/...
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 ...
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 ...
leetcode括号生成python leetcode 打算开始在leetcode上刷题了嗯。 希望不要因为各种各样的原因半途而废…… 2015.3.28 在这里贴一下写过的题解和思路。 长期更新。 #19 Remove Nth Node From End of List Given a ...
leetcode 316 leetcode 题解更新脚本 用于快速的更新题解、同步leetcode的做题情况。 题解见: 文件名 用途 add_to_blog_solution_table.py 添加题解地址or题解语言到表格,能同步leetcode新题情况 blog_solution_...
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 ...
leetcode 2 Leetcode答案集 关于项目: 本项目包含本人LeetCode解题的答案,全部将由JavaScript语言进行解答。并会在每个题目的文件夹中添加相关的思路解析。 详情 # Title Solution Time Space Difficulty 1 Two ...
26 | [Remove Duplicates from Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/)| [C++](./C++/remove-duplicates-from-sorted-array.cpp) [Python](./Python/remove-duplicates...
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
lru缓存leetcode leetcode 我的 leetcode Javascript / Swift / Mysql 解决方案 典型问题 动态规划 子阵列 ..../topics/linked-list/remove-nth-node-from-end-of-list.md) 规则 常见的 分而治之 常见的
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
leetcode题库 Little Algorithm 从 2020 年初开始,我在公众号《面向大象编程》上发表面试算法、LeetCode 题解相关文章,至今收获不少好评。此仓库是公众号内容的补充,包括公众号文章涉及到的题目的参考代码,以及 ...
题目来源:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了...
lru cache leetcode #算法解题报告 主要记录我每天做的题目,包括leetcode, 剑指offer等在线编程平台,以前做过的等时间够再一起...19.Remove Nth Node From End of List 20.Valid Parentheses 21.Merge Two Sorted L
leetcode添加元素使和等于 programmer_practices algorithm practices 最优解Book: 双栈实现getMin Stack. 双栈实现Queue. 递归和栈实现逆序操作一个栈. 仅用一个栈排序另一个栈. 打印两个有序链表的公共部分. 删除...
leetcode怎么销号 记录我在用python刷leetcode中各个题的解题思路 the answers for leetcode problem by python 10.Regular Expression Matching: 递归的方法:当前正则第二个字符不为'*',很简单,比较当前,两个...
leetcode 跳跃 leetcode 数据结构和算法是一个程序员的基石,本仓库用于个人学习基本数据结构和算法。 序号 题目名称 难易程度 归类 备注 1 两数之和 数组 2 两数相加 中等 链表 3 无重复字符的最长子串 7 整数反转 ...
019_Remove_Nth_Node_From_End_of_List 020_Valid_Parentheses 021_Merge_Two_Sorted_Lists 022_Generate_Parentheses 023_Merge_k_Sorted_Lists 024_Swap_Nodes_in_Pairs 025_Reverse_Nodes_in_k-Group 026_...
leetcode 面试清单 Java 比较器与比较器 哈希 静止的 例外 线 泛型 算法 链表 Linked List Cycle Remove Nth Node From End of List Merge Two Sorted Lists 两个链表的交集 Remove Duplicates from Sorted List ...