
数据结构与算法
小林玩大数据
专注大数据领域研究,包括 Hadoop、Spark、Flink、Kafka、Hive等。
展开
-
单链表系列问题
. 问题描述 这道题目主要讨论单链表相交的一系列问题。在本题中,单链表可能有环,也可能无环。给定两个单链表的头节点 head1 和 heda2 ,这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交的第一个节点;如果不相交返回 null 即可。 要求:如果链表 1 的长度为N,链表 2 的长度为 M,时间复杂度请达到 O(N+M),空间复杂带请达到 O(1)。原创 2020-08-09 08:46:08 · 758 阅读 · 0 评论 -
双端队列,生成窗口最大值数组!
微信公众号:小林玩大数据如果你觉得本文对你有帮助,拉到文末点个在看 题目描述 解题思路 代码实现 题目描述 【生成窗口最大值数组】 有一个整形数组 arr,和一个大小为 w 的窗口从最左边滑到最右边,窗口每次向右边滑动一个位置。 例如,数组为[4,3,5,4,3,3,6,7],窗口大小为3 [4 3 5] 4 3 3 6 7 窗口最大值为5 4 [3 5 4] 3 3 6 7 窗口最大值为5 4 3 [5 4 3] 3 6 7 窗口最大值为5 4 3 5 [4 3 3] 6 7 窗口最大值为.原创 2020-07-13 10:40:23 · 755 阅读 · 0 评论 -
由两个栈组成的队列,你玩过嘛?
题目描述 【题目】: 编写一个类,用两个栈实现队列,满足队列的基本操作要求:enqueue(入队)、出队(dequeue),peek:获取队列中对头元素。 【解答】 栈数据结构的特点是先进后出,而队列数据结构的特点是先进先出。用两个栈正好能把顺序反过来实现类似队列的操作。 具体实现上是一个栈作为压入数据栈,在压入数据栈时,只往这个栈中压入数据(入队),记为 stackPush,另一个栈只作为弹出栈,在弹出数据(出队)只从这个栈弹出,记为 stackPop。 因为数据压入栈的时候,顺序时先进后出的。原创 2020-07-02 15:26:59 · 760 阅读 · 0 评论 -
设计一个具有 getMin 功能的栈,看这里!
题目描述 【问题:】 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中的最小元素。 【要求:】 pop(),push(),getMin()时间复杂度都为 O(1); 设计的栈类型可以使用可以使用现成的栈结构。 【解答:】 在设计上可以考虑使用两个栈,一个存放数据的栈称为 dataStack ;另一个存放数据栈中的最小值称为 minStack ;具体有两种实现方式。 实现方案一 【算法描述】 入栈规则 假设当前入栈数据为 newData ,先将其压入 dataStack ,然后判断 min原创 2020-07-01 15:19:47 · 796 阅读 · 0 评论