数据结构和算法
数据结构和算法
5星上将
努力让职业变为兴趣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法题:O(1)时间复杂度实现获取栈的最大值、最小值
问题描述实现O(1)获取最大最小值的栈问题:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的getMin函数,getMax函数。在该栈中,调用getMin、getMax、push及pop的时间复杂度都是O(1).思路定义一个minStack辅助栈每次记住入栈stack的最小值,即:将数据分别入栈stack和minStack,当入栈minStack的时候,与栈顶元素比较大小,若小于栈顶元素,则入栈成为新的栈顶元素,若大于栈顶元素,则入栈原先的栈顶元素。getMax的思路同上。代码im原创 2020-10-25 14:11:30 · 2775 阅读 · 0 评论 -
Java实现栈操作
栈栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。(百度百科)如图:其中,把数据写入称为入栈或压栈(push),把数据写出称为出栈(pop)。当栈为空,此时,栈顶=栈底Java实现package Stack;//先进后出p原创 2020-05-12 20:47:11 · 390 阅读 · 0 评论 -
Java链表基础
前记最近又开始重新看数据结构和算法,算是还账吧。看到链表这觉得问题很多,网上的参考有些博主说法也不尽相同,于是刷了几道题找找思路和感觉,用Java总结了一下,毕竟网上大多都是C的(指针这问题感觉好多人也没完全搞懂,包括我)。链表首先,链表的存在就是为了解决顺序表不能解决的问题,即顺序表在插入一个节点的时候,在插入点后方的节点都要往后移动一位,因此时间复杂度在最好的情况下就是在最后的节点后面插...原创 2020-05-04 20:50:37 · 667 阅读 · 4 评论 -
腾讯面试题:利用快慢指针找出单链表中间值(Java)
一般思路:这道题如果按照一般的思路是:先遍历一次链表,记录住一共有多少个节点,然后,再次遍历找寻中点。时间复杂度: O(N) + O(N/2) = O(3/2 N)快慢指针利用快慢指针,思路如下:我们把一个链表看成一个跑道,假设a的速度是b的两倍,那么当a跑完全程后,b刚好跑一半,以此来达到找到中间节点的目的。时间复杂度: O(N/2)代码 public int search(Li...原创 2020-04-30 23:30:31 · 489 阅读 · 0 评论
分享