登录
专栏 1 关注 3 篇文章
手把手带你搞定算法
刷算法,学套路,从现在开始,带你一周之内搞定 LeetCode。
叶孤城
关注专栏
推荐文章
举报
3 年前  /  叶孤城

手把手刷链表 - 回文链表

回文链表回文链表 这道题目非常经典,融合了 快慢指针 找中点以及 反转链表 。反转链表在上一篇做了详细的解释,我们主要讲解下快慢指针。快慢指针var fast = headvar slow = headwhile(fast != nil && fast?.next != nil) { fast = fast?.next?.next slow = slow?.next}// slow 指针现在指向链表中点// 如果 fast 指针没有指向 nil,说明链表长度为奇数,slow 还要再前

1 赞 0 评论
收藏
3 年前  /  叶孤城

手把手刷链表 - 反转链表

关于链表链表的形式有很多,单链表、双链表、单向循环链表、双向循环链表。我们看下单链表和双链表的数据结构,双链表比单链表多了一个 prev 指针,用来指向当前节点的前一节点。public class ListNode { public var val: Int public var next: ListNode? public init(_ val: Int) { self.val = val self.next = nil }}class Li

1 赞 0 评论
收藏
3 年前  /  叶孤城

手把手理解数据结构

数据结构的存储方式数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储)。我们所能看到其他数据结构,比如栈、堆、图、树等等本质都还是在数组或者链表上的特殊操作。比如说「队列」、「栈」既可以使用链表也可以使用数组实现。用数组实现,就要处理扩容缩容的问题;用链表实现,则需要更多的内存空间存储节点指针。「图」的两种表示方法,邻接表就是链表,邻接矩阵就是二维数组。可以看到数据结构种类很多,但是底层存储是数组或者链表,二者的优缺点如下:数组由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素

1 赞 0 评论
收藏