如何比较O(n)中2个堆栈中的整数?

时间:2011-06-23 20:20:49

标签: java algorithm stack time-complexity

我有两个Stacks s1和s2。 s1包含负整数,s2包含正整数。两个堆栈已经从最低值(在底部)到最高值(在顶部)进行了排序。 x1和x2是s1和s2中的整数。我想检查两个堆栈以查看[x1 + x2 =给定的整数i]。在O(n)中执行此操作的最佳方式(或方式)是什么?

更新:x1和x2是整数......接受

更新2:该方法返回一个布尔值并具有以下参数:

boolean method(Stack s1, Stack s2, int i)
如果s1中的任何整数x1 + s2 = i

中的任何整数x2,则

方法将返回true

1 个答案:

答案 0 :(得分:1)

我假设你的意思是s1中的任何数字+ s2中的任何数字都是给定的整数i。

如果是的话,

  1. 弹出两个堆栈的顶部
  2. 添加
  3. 他们是否相等?
    1. 是 - >你完成了
  4. 它比我大吗?
    1. 是 - >然后,负数可以没有对应物,扔掉它,从s1弹出下一个负数,转到2
    2. 不 - >然后,正数可以没有对应物,扔掉它,从s2弹出下一个正数,转到2
  5. (在任何时候,如果一个堆栈是空的,你就完成了 - 没有答案)

    编辑:根据你的排序顺序,我认为第4步我错了 - 但这个基本想法应该很接近。