链表
weixin_45663946
这个作者很懒,什么都没留下…
展开
-
两两交换链表中的结点
题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点 交换。 图片讲解: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } *原创 2020-10-13 15:03:50 · 101 阅读 · 1 评论 -
环形链表 找进环的结点
题目概述: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 解题思路:(快慢指针) f为快指针所走的步数 s为慢指针所走的步数 a为入环前所有的结点数 b为环里面所有的结点数 n为所走的圈数 第一次相遇 (1)f=2s (2)f=s+nb 由(1)(2)得 f=2nb s=nb 假设我们从开始统计步数k 则k=a+nb时走到入环的第一个结点 看上面 s=nb 在这个时间点如果s再走a步刚好到入环的第一个结点 问题转变为求a 把f指针指向头结点 然后让f和s一起走原创 2020-10-10 09:07:01 · 67 阅读 · 0 评论 -
数组链表对比,双指针思路,找中间元素(快慢指针),环型链表问题
数组: 连续存储 每个元素占用相同空间 优点:读取方便,根据偏移实现快速的随机读写 缺点:增加 删除元素慢 时间复杂度为O(n) 链表: 若干结点组成 结点由数据域和指针域构成 数据域可以使int string 等等 头结点作用:(处理统一) 1、防止单链表是空的。 2、为了方便单链表的特殊操作,插入在表头或者删除第一个 结点.这样就保持了单链表操作的统一性。 双指针思路: 问题:找到链表中倒数第k个元素 p,q两个指针 step1:先让p沿着next走k次(此时p指向k原创 2020-10-09 15:19:34 · 115 阅读 · 0 评论