LeetCode Exercise 8: Remove Nth Node From End of List
来源:互联网 发布:java main启动spring 编辑:程序博客网 时间:2024/06/03 20:36
题名:Remove Nth Node From End of List
难度:Medium
题目描述:
题目分析:
如果不要求遍历次数是很简单的,可以遍历一次得到链表长度L,然后再一次遍历删除第L-n+1个节点。
现在我们考虑如何一次遍历删除倒数第n个节点。我们可以使用两个指针:begin和end,两个指针之间隔开n的距离。(这样如果end是尾节点,那么begin指向的就是目标节点的前一个节点,便于之后的删除操作)之后我们可以同时移动两个节点,直到end指针到达链表尾部。期间要注意end指针是否提前到达尾部,如果要删除的节点是第一个节点,begin指针不可能指向目标节点的前一个节点。处理链表问题要一直注意是否越界指向了NULL,对NULL进行了操作。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { // 如果只有一个元素,直接返回NULL if(head->next == NULL){ return NULL; } ListNode* begin = head; ListNode* end = head; //移动end指针,与begin拉开n个距离,使begin定位在要删除元素的前一个元素 int i; //注意是否提前到达尾部,即在移动完n步之前到达尾部 for(i = 0; i < n && end->next != NULL; i++){ end = end->next; } if(i != n){ //如果提前到达尾部,则要删除元素为第一个元素 *head = *(head->next); } else{ //同时移动begin和end,直到end到达尾部 while(end->next != NULL){ begin = begin->next; end = end->next; } //删除指定节点 begin->next = begin->next->next; } return head; }};
阅读全文
0 0
- LeetCode Exercise 8: Remove Nth Node From End of List
- LeetCode[Linked List]: Remove Nth Node From End of List
- 19. Remove Nth Node From End of List leetcode list
- [Leetcode]LeetCode 19:Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List
- [Leetcode] Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List
- leetcode 40: Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- Leetcode 19 Remove Nth Node From End of List
- [Leetcode] Remove Nth Node From End of List
- [LeetCode]Remove Nth Node From End of List
- LeetCode-Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- LeetCode 19: Remove Nth Node From End of List
- LeetCode - Remove Nth Node From End of List
- LeetCode | Remove Nth Node From End of List
- Android百度(1)---百度语音集成指南
- org.mongodb.driver.cluster : Exception in monitor thread while connecting to server localhost:27017
- 判断一个序列是否是一棵二叉树的后序遍历序列(分治算法)
- Spring中@Autowired注解、@Resource注解的区别
- 简单高仿荷包注册进度条
- LeetCode Exercise 8: Remove Nth Node From End of List
- ubuntu下修改mysql数据库root密码
- WebService
- 关于分库分表?
- SpringBoot32-springboot开发部署与测试-云部署,基于Docker的部署
- 如何封装一个简单的Android关机接口
- 数组中只出现一次的数字
- leetcode题解-5. Longest Palindromic Substring
- 宏一定要用大写