OJ 19 Remove Nth Node From End of List
来源:互联网 发布:nginx需要哪些运行库 编辑:程序博客网 时间:2024/05/23 00:01
题目要求:
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.
解题思路:
首先要找到这个点,然后删除
总共设计了两个函数,一个是删除单向链表中的某个节点的函数,还有一个是找到单向链表中倒数第n个节点函数。
首先,如何找到倒数第n个节点?用两个指针,第一个指针first先走n步,然后第二个指针second出发,与第一个指针同时向前,当第一个指针走到单向链表的最后,second所在的位置就是所要找的倒数第n个节点。不过上面的方法有一个漏洞,就是如果n大于链表的长度len的时候,一般题目会给出处理方法:
- n大于len直接返回错误
- n大于len,按len计算
- n大于len的时候,按照n%len计算
这里我们先假设所有的n都是不大于len的。
代码:
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNode *removeNthFromEnd(ListNode *head, int n) { ListNode *first = head; int step = 1; while (step < n && first != NULL) { first = first->next; step++; } ListNode *second = head; while (first != NULL&&first->next != NULL) { second = second->next; first = first->next; } return removeNode(head, second); } ListNode *removeNode(ListNode *head, ListNode *thenode) { ListNode *tmp = head; if (head == thenode) { return head->next; } while (tmp->next != thenode) { tmp = tmp->next; } tmp->next = thenode->next; delete thenode; return head; }};
0 0
- OJ 19 Remove Nth Node From End of List
- [LeedCode OJ]#19 Remove Nth Node From End of List
- LeetCode OJ:Remove Nth Node From End of List
- LeetCode OJ - Remove Nth Node From End of List
- [LeetCode OJ]Remove Nth Node From End of List
- LeetCode OJ Remove Nth Node From End of List
- 【LeetCode OJ 019】Remove Nth Node From End of List
- leetcode oj java Remove Nth Node From End of List
- <LeetCode OJ> 19. Remove Nth Node From End of List
- [LeetCode OJ] 19. Remove Nth Node From End of List
- LeetCode OJ - Remove Nth Node From End of List
- Leetcode OJ -Remove Nth Node From End of List
- LeetCode OJ-19.Remove Nth Node From End of List
- Remove Nth Node From End of List
- Remove Nth Node From End of List
- Remove Nth Node From End of List
- Remove Nth Node From End of List
- Remove Nth Node from End of List
- 【转】MFC 获得各类指针、句柄的方法
- struts2 springmvc 原理 以及区别
- 在Mac上编译uboot,linux kernel
- 论指针数组和数组指针
- wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
- OJ 19 Remove Nth Node From End of List
- 将文件放到Android模拟器的SD卡中的两种解决方法
- 和菜鸟一起学c之函数中堆栈及运行内存情况
- 从JAVA客户端访问Redis示例(入门)
- 数据分离技术之输出水仙花数
- Java传值与传引用
- POJ 2063 Investment(完全背包--容量变化)
- 3.26-leetcode
- oracle行转列(连接字符串函数)