LeetCode | 19. Remove Nth Node From End of List
来源:互联网 发布:linux tee 用法 编辑:程序博客网 时间:2024/05/17 22:29
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.
其实就是删除链表倒数第N个节点.注意链表无头结点,head就是第一个节点.
//自己的代码,9ms AC/** * 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) { int tot = 1, i = 1; ListNode* it = head; while(it->next) { tot++; it = it->next; } it = head;//根据题意,head就是第一个元素 if(n == tot)//删除第一个元素 { head = head->next; return head; } while(i<tot-n) { i++; it = it->next; } if(n == 1)//删除最后一个 { it->next = NULL; return head; } ListNode* it2 = it->next; ListNode* it3 = it2->next; it->next = it3; it2->next = NULL; delete(it2); return head; }};
//后面提供的代码,用快指针和慢指针,只需遍历一遍.9ms AC/** * 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) { if (head == NULL) return NULL; ListNode new_head(-1); new_head.next = head; ListNode *slow = &new_head, *fast = &new_head; for (int i = 0; i < n; i++) fast = fast->next; while (fast->next) { fast = fast->next; slow = slow->next; } ListNode *to_be_deleted = slow->next; //待删指针为slow->next slow->next = slow->next->next; delete to_be_deleted; return new_head.next; }};
1 0
- 19. Remove Nth Node From End of List leetcode list
- [LeetCode]19.Remove Nth Node From End of List
- LeetCode 19. Remove Nth Node From End of List
- 19. Remove Nth Node From End of List Leetcode Python
- LeetCode --- 19. Remove Nth Node From End of List
- LeetCode 19.Remove Nth Node From End of List
- [Leetcode] 19. Remove Nth Node From End of List
- [leetcode] 19.Remove Nth Node From End of List
- <LeetCode OJ> 19. Remove Nth Node From End of List
- 19. Remove Nth Node From End of List LeetCode
- leetcode 19. Remove Nth Node From End of List
- [LeetCode OJ] 19. Remove Nth Node From End of List
- LeetCode 19. Remove Nth Node From End of List
- Leetcode:19. Remove Nth Node From End of List(JAVA)
- leetcode 19. Remove Nth Node From End of List
- Leetcode 19. Remove Nth Node From End of List
- 【LeetCode】19. Remove Nth Node From End of List
- leetcode 19.Remove Nth Node From End of List
- VB如何触发焦点事件和失去焦点事件
- PAT试题1001题
- 二叉树的层次遍历
- 基于ARM 的led循环点亮C程序
- 重新初识java
- LeetCode | 19. Remove Nth Node From End of List
- 多项式乘法计算
- python-cookbook学习笔记六
- windows下beego安装
- git的使用
- 儿童阅读书籍网站
- Spring学习笔记-IOC高级特性3-用Java Config简化XML配置
- Linux下CSITOOL和MATLAB安装心得
- swoole中的php代码热更新