LintCode 35: Reverse Linked List
LintCode 35: Reverse Linked List
题目描述
翻转一个链表。
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null。
Mon Mar 6 2017
思路
这道题的方法就很多了,我这里第一想到的就是用三个指针来实现,可能我以前这么实现过吧。
不过这个方法并不是最优的方法,还可以用两个指针,或者递归实现,这些坑以后再补吧。
代码
// 反转链表
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The new head of reversed linked list.
*/
ListNode *reverse(ListNode *head) {
ListNode* ans;
if (head == NULL || head->next == NULL) return head;
else if (head->next->next == NULL)
{
head->next->next = head;
ans = head->next;
head->next = NULL;
return ans;
}
ListNode *p1 = head, *p2, *p3;
while(1)
{
p2 = p1->next;
p1 =
}
}
ListNode *reverse(ListNode *head) {
ListNode* ans;
if (head == NULL || head->next == NULL) return head;
else if (head->next->next == NULL)
{
head->next->next = head;
ans = head->next;
head->next = NULL;
return ans;
}
ListNode* p1 = head, *p2 = NULL, *p3 = NULL;
while(1)
{
if (p1 != NULL && p1->next != NULL && p1->next->next != NULL)
{
p2 = p1->next;
p1->next = p3;
p3 = p2->next;
p2->next = p1;
p1 = p3->next;
p3->next = p2;
continue;
}
else if (p1 != NULL && p1->next != NULL && p1->next->next == NULL)
{
ans = p1->next;
ans->next = p1;
p1->next = p3;
}
else if (p1 != NULL && p1->next == NULL)
{
ans = p1;
ans->next = p3;
}
else
{
ans = p3;
}
break;
}
head->next = NULL;
return ans;
}
};
LintCode 35: Reverse Linked List的更多相关文章
- LintCode 532: Reverse Pairs
LintCode 35: Reverse Linked List 题目描述 翻转一个链表. 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1 ...
- [LintCode] Reverse Linked List 倒置链表
Reverse a linked list. Have you met this question in a real interview? Yes Example For linked list 1 ...
- LeetCode解题报告—— Reverse Linked List II & Restore IP Addresses & Unique Binary Search Trees II
1. Reverse Linked List II Reverse a linked list from position m to n. Do it in-place and in one-pass ...
- [刷题] 206 Reverse Linked List
要求 反转一个链表 不得改变节点的值 示例 head->1->2->3->4->5->NULL NULL<-1<-2<-3<-4<-5 ...
- [LeetCode] Reverse Linked List 倒置链表
Reverse a singly linked list. click to show more hints. Hint: A linked list can be reversed either i ...
- [LeetCode] Reverse Linked List II 倒置链表之二
Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1-> ...
- Leetcode-206 Reverse Linked List
#206. Reverse Linked List Reverse a singly linked list. /** * Definition for singly-linked list. * ...
- 迭代和递归 - leetcode 206. Reverse Linked List
Reverse Linked List,一道有趣的题目.给你一个链表,输出反向链表.因为我用的是JavaScript提交,所以链表的每个节点都是一个对象.例如1->2->3,就要得到3-& ...
- 【leetcode】Reverse Linked List II
Reverse Linked List II Reverse a linked list from position m to n. Do it in-place and in one-pass. F ...
随机推荐
- HTML与URL两种录制模式分析(转)
如何选择两种模式? 1.基于浏览器的应用程序推荐使用HTML-Based Script. 2.不是基于浏览器的应用程序推荐使用URL-Based Script. 3.如果基于浏览器的应用程序中包含了J ...
- 函数调用时形参的传递也会被认为是赋值操作(继承自Object后会出现的问题)
http://blog.csdn.net/houqd2012/article/details/25070987
- linux中inittab文件详解
init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/ ...
- response和request的setCharacterEncoding区别
一.request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值. 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定, ...
- 半夜思考, Java 重载的实现
因为最近在学 scala,看到了参数的默认值这个特性,但是Java好像没有这个特性, Java8 也没有, 所以特意去查了一下,就牵扯到了 C++了,[只怪 C++没怎么学,,]. 下面将一下为什么 ...
- 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码
一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...
- UVA10054_The Necklace
很简单,求欧拉回路.并且输出. 只重点说一下要用栈来控制输出. 为啥,如图: 如果不用栈,那么1->2->3->1就回来了,接着又输出4->5,发现这根本连接不上去,所以如果用 ...
- MT【145】不变的平面角
(2018,4月学考数学选择最后一题)如图,设矩形$ABCD$所在平面与梯形$ACEF$所在平面相交于$AC$. 若$AB=1,BC=\sqrt{3},AF=EF=EC=1,$则下面二面角的平面角为定 ...
- HDFS问题集(一),使用命令报错:com.google.protobuf.ServiceException:java.lang.OutOfMemoryError:java heap space
仅个人实践所得,若有不正确的地方,欢迎交流! 一.起因 执行以下两条基本的HDFS命令时报错 hdfs dfs -get /home/mr/data/* ./ hdfs dfs -ls /home/m ...
- 【bzoj2733】 HNOI2012—永无乡
http://www.lydsy.com/JudgeOnline/problem.php?id=2733 (题目链接) 题意 给出图上$n$个点,每个点有一个点权,每次询问一个连通块中点权第$K$小的 ...