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 ...
随机推荐
- 1014 C语言文法定义
<程序>→<外部声明>|<程序><外部声明><外部声明>→<函数定义>|<声明><函数定义>→<数 ...
- Selenium WebDriver 中鼠标和键盘事件分析及扩展(转)
文章转自:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/
- 微信小程序 功能函数 购物车商品删除
// 购物车删除 deleteList(e) { const index = e.currentTarget.dataset.index; let carts = this.data.carts; c ...
- SpringBoot(十三)_springboot上传Excel并读取excel中的数据
今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...
- 【uoj#142】【UER #5】万圣节的南瓜灯 乱搞+并查集
题目描述 给出一张 $n\times m$ 的网格图,两个格子之间有一条双向边,当且仅当它们相邻,即在网格图中有一条公共边. 特殊地,对于 $1\le x\le n$ ,$(x,1)$ 和 $(x ...
- 深度学习读书笔记之RBM(限制波尔兹曼机)
深度学习读书笔记之RBM 声明: 1)看到其他博客如@zouxy09都有个声明,老衲也抄袭一下这个东西 2)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的 ...
- java的不可变类
不可变类(immutable class)是指当创建了这个类的实例后,就不允许修改它的值了,也就是说,一个对象一旦被创建出来,在其整个生命周期中,它的成员变量就不能被修改了. Java中所有基本类型的 ...
- [BZOJ3295][Cqoi2011]动态逆序对 CDQ分治&树套树
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MB Description 对于序列A,它的逆序对数定义为满足i<j,且 ...
- BZOJ 3524 Couriers | 主席树
BZOJ 3524 Couriers 题意 求一个区间内出现超过区间长度的一半的数,如果没有则输出0. 题解 我可能太菜了吧--这道题愣是没想出来-- 维护权值主席树,记录每个数都出现过多少次: 查询 ...
- Java考试题之七
QUESTION 150 Click the Exhibit button. Given: ClassA a = new ClassA(); a.methodA(); What is the resu ...