《程序员代码面试指南 IT名企算法与数据结构题目最优解》题解
1.题目01
2.题解思路
方法一:
如原书思路,设置两个栈stackData和stackMin,当前数据为data,先压入stackData,然后判断stackMin是否为空。
如果为空,data压入stackMin中,如果不空,则比较data和stackMin栈顶元素。如果data小则入栈,否则stackMin的栈顶元素重复入栈。如图:
方法二:
只用一个栈实现,在栈的类中添加返回最小值的方法。使用ArrayList来存储栈内元素,然后便利ArrayList返回栈中最小值。
3.代码实现
方法一:
1 | package com.ITexercise; |
方法二:
1 | package com.ITexercise; |
4.分析
方法一时间复杂度为O(1),空间复杂度为O(n)
方法二getMin()时间复杂度为O(n),空间复杂度为O(n)