输入两个链表,找出它们的第一个公共节点。 普通办法,对A链表每个节点都遍历B链表,看有没有相同,时间复杂度mn。 用空间换时间,因为链表只要遇到第一个相同的节点,后面的节点都相同,也就是说可以从链表尾往回找。但是因为缺乏往回的指针,所以使用栈,两个栈分别把两个链表的所有节点压进去,然后再一对一对弹出 ...
分类:
其他好文 时间:
2020-07-06 11:10:00
阅读次数:
53
非递归 思路1 用两个栈实现后序遍历的步骤: 申请一个栈stack1,将头节点压入栈中 将stack1中元素弹出,记为temp,依次将temp的左孩子,右孩子压入stack1(如果有的话 每个从stack1中弹出的元素都压入stack2 4.不断重复步骤2,3直到stack1为空停止 5.从stac ...
分类:
其他好文 时间:
2020-07-04 22:33:18
阅读次数:
64
剑指 Offer 09. 用两个栈实现队列 思路 把数据在两个栈中分别“折腾”一次,出来的顺序就是队列的顺序。 向stack1中push数据——向队列中添加数据 从stack2中弹出数据——从队列中删除头部数据 代码 import java.util.Stack; class CQueue { St ...
分类:
其他好文 时间:
2020-07-01 23:43:18
阅读次数:
54
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例: 输入: ["CQueue","appendTail","delete ...
分类:
其他好文 时间:
2020-07-01 22:17:02
阅读次数:
57
剑指 Offer 09. 用两个栈实现队列 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof 题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appen ...
分类:
编程语言 时间:
2020-06-30 20:25:53
阅读次数:
64
原题链接 题解 题目的大意就是利用两个栈来模拟队列的插入和删除,最容易想到的就是声明两个栈a, b,a这个栈用来做插入,b用来做删除作用。 当我们数据插入到栈中的,栈中的数据顺序是和删除的顺序相反的,①这就可以利用b这个栈了,将a中的数据弹出,依次压入b中,那么b中就是删除的顺序了。 ②当我们删除的 ...
分类:
其他好文 时间:
2020-06-30 13:16:30
阅读次数:
60
C:给两个栈,每次只能取栈顶元素,取完后自动pop 问能取到最多几个元素 栈中元素之和必须小于等于K 官方题解给出的做法是O(N+M) 受上一场CF启发,此题可以很自然联想到二分做法。 二分答案,答案显然具有单调性。check函数只需遍历一遍可能情况 复杂度O((N+M)logX) int n, m ...
分类:
其他好文 时间:
2020-06-28 15:01:37
阅读次数:
52
题目: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入:["CQueue","appendTail","d ...
分类:
编程语言 时间:
2020-06-27 16:00:11
阅读次数:
68
1.要点 使用java的同学请注意,如果你使用Stack的方式来做这道题,会造成速度较慢; 原因的话是Stack继承了Vector接口,而Vector底层是一个Object[]数组,那么就要考虑空间扩容和移位的问题了。 可以使用LinkedList来做Stack的容器,因为LinkedList实现了... ...
分类:
其他好文 时间:
2020-06-26 12:59:54
阅读次数:
64
中缀表达式转换为后缀表达式(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 步骤 初始化两个栈:运算符栈 s1 和储存中间结果的栈 s2 从左至右扫描中缀表达式 遇到操作数时,将其压 s2 遇到运算符时,比较其与 s ...
分类:
编程语言 时间:
2020-06-25 18:01:24
阅读次数:
77