题目 1、描述 输入一个链表,反转链表后,输出新链表的表头。 2、示例 输入: {1,2,3} 输出: {3,2,1} 思路 1、初始化:3个指针 (1)pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向nullptr (2)cur指针指向待反转链表的第一个节点,最开始第一个节点 ...
分类:
编程语言 时间:
2021-06-06 19:05:34
阅读次数:
0
206. Reverse Linked List 【题意】 将整个链表进行翻转 【题解】 非递归的做法比较好理解。 递归的做法很巧妙。用tail指针保存最后一个节点,这个不难理解,主要是head->next->next = head ,假设链表为1->2->3->4, 当head->3时,head- ...
分类:
其他好文 时间:
2020-11-16 13:45:39
阅读次数:
12
原题链接 来源:剑指offer, Hulu面试题 题意很简单。给定一个单链表,反转这个单链表,返回翻转后的头节点。 方法一 借助栈的性质 要将链表翻转,很容易想到借助栈的后进先出的性质来改变链表的顺序。 将链表节点顺序压入栈中,链表节点全部进栈以后,取栈顶元素作为新链表的头节点,然后将元素不断出栈, ...
分类:
其他好文 时间:
2020-07-10 11:23:11
阅读次数:
75
1.双指针 双指针解决数组,字符串,二分搜索,链表翻转、判断是否有环、寻找链表向后数第i个元素、链表中间的元素。 1.1有序数组两数之和 left = 0,right = arr.len 1 若arr[left]+arr[right] sum,right ;否则left++; 1.2最小子串(双指针 ...
分类:
其他好文 时间:
2020-04-22 22:52:53
阅读次数:
81
#include <stdio.h> #include <stdlib.h> typedef struct ListNode { int val; struct ListNode *next; }ListNode; ListNode* ReverseList(ListNode* pHead) { i ...
分类:
其他好文 时间:
2020-04-02 22:45:25
阅读次数:
56
翻转链表(LeetCode206题) 翻转成 我们思考,当 到底该怎样去思考,思考问题的重心在哪里? 先说结论:思考问题的重心是当前如何处理当前节点? 假设现在当前节点是头结点2,那么当发生翻转到底发生了什么? 如果我们要将节点2指向节点1,但是之前是指向节点3的,为了下次能够访问到节点3,我们应该... ...
分类:
其他好文 时间:
2020-01-06 22:46:34
阅读次数:
95
链表的翻转是程序员面试中出现频度最高的问题之一,常见的解决方法分为递归和迭代两种。最近在复习的时候,发现网上的资料都只告诉了怎么做,但是根本没有好好介绍两种方法的实现过程与原理。所以我觉得有必要好好的整理一篇博文,来帮忙大家一步步理解其中的实现细节。 我们知道迭代是从前往后依次处理,直到循环到链尾; ...
分类:
其他好文 时间:
2019-09-23 11:54:02
阅读次数:
109
```CPP
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseLi... ...
分类:
其他好文 时间:
2019-09-01 21:59:09
阅读次数:
90
链表翻转 字符串拷贝 && memcpy &memmove 快排和时间复杂度 字符串中查找字符 string类的实现 堆排序&时间复杂度 智能指针 一个英文文档,计算出现次数是10次的单词 互斥锁 多个字符串,找到前缀相同最多的两个字符串 判断一个点是否在矩阵中 两个玻璃球判断楼高 千万字符串中查找 ...
分类:
其他好文 时间:
2019-09-01 11:08:02
阅读次数:
96
[TOC] LeetCode 单链表专题 $[2]$ Add Two Numbers 模拟,注意最后判断进位是否为1。 时间复杂度 $O(n)$ $[92]$ Reverse Linked List II 给定链表,翻转第m个结点到第n个结点。 从第m+1个结点开始,在第m 1个结点之后的位置用 头 ...
分类:
其他好文 时间:
2019-02-23 01:32:44
阅读次数:
231