链表
创不了浩
代码练习生
展开
-
2020-09-12
链表1 反转链表核心思想1.生成一个新节点 ListNode* pre = NULL2.记录当前节点的逆转前的下一个节点 ListNode* next = head->next;3.让下一个节点指向当前上一个节点(第一个节点指向空) head->next=pre4.一直遍历到最后一个节点 pre = head; head = next;/** * Definition for singly-linked list. * struct ListNode { * in原创 2020-09-12 17:34:24 · 121 阅读 · 0 评论 -
求两个链表的交点,若无交点返回null, 两种方法,时间复杂度为O(n)和O(n logn)
目录方法1使用set必备知识set的使用利用set求两个链表的交点方法2 分别求出链表长度做差后同时移动核心思想:1.分别求出两个链表长度2.用长的减去短的得到差值delta3.让长链表的头指针向前移动delta位,让两个链表此时指针和交点距离一样远4.同时移动两个链表的指针,直到有第一个交点为止.方法1使用set必备知识set的使用利用set求两个数组的相同元素#include<set>#include<stdio.h> int main(){ std::set&l原创 2020-05-19 08:21:00 · 539 阅读 · 0 评论 -
逆序链表从m到n位置
目录1 逆置整个链表2 逆置一个链表的m到n位的元素,返回逆置后的头结点核心步骤1.如何找到逆置段的开始和结束位置?2.几个关键位置3.如何连接逆置后的逆置段分类讨论逆置段时候包括逆置前链表的头结点?学习地址1 逆置整个链表#include<stdio.h>struct ListNode{ int val; ListNode* next; ListNode(int x) : val(x) ,next(NULL) {}}; class Solution{ public:原创 2020-05-17 13:45:27 · 341 阅读 · 0 评论