请问这样实现是正确的吗?

请问这样实现是正确的吗?

public void push(int x){
   stack.add(x);
}

public int pop(){
   Stack<Integer> stack2 = new Stack<>();
   while (stack.size()>1){
       stack2.add(stack.pop());
   }
   int ret=stack.pop();
   for(int i=0;i<stack2.size();i++){
       stack.add(stack2.pop());
   }
   return ret;
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2020-09-06 18:17:08

pop 的思路虽然可以,但是这样做 pop 是固定 O(n) 级别复杂度的,性能较差。提交给 leetcode 试试看?


另外,你的实现中,

for(int i=0;i<stack2.size();i++){
    stack.add(stack2.pop());
}

无法做到把 stack2 的所有元素放入 stack,想象看为什么?


继续加油!:)


  • 提问者 warren_au #1
    for(int i=0;i<=stack2.size();i++){ stack.add(stack2.pop()); } 这样呢?
    2020-09-06 18:58:14
  • liuyubobobo 回复 提问者 warren_au #2
    不对。stack2 里装 10 个元素试试看?
    2020-09-07 01:42:09
  • 提问者 warren_au 回复 liuyubobobo #3
    是有问题,但是没有看出问题出在哪。。
    2020-09-07 13:17:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师