【问题标题】:Given an unsorted array of integers, all two elements of the array that sum to the value x. You must use a stack or a queue给定一个未排序的整数数组,数组中所有两个元素的和等于值 x。您必须使用堆栈或队列
【发布时间】:2014-03-11 21:48:12
【问题描述】:

我一遍又一遍地考虑它,但我无法弄清楚堆栈或队列在这种情况下会有什么用处。请注意,需要使用堆栈或队列...请帮助!

编辑:我忘了提到输出应该是什么样子。这是示例输出:

All 2-Elements adding to 100 in the array are: 
Indices 0 & 3 with values 20 & 80 
Indices 3 & 6 with values 80 & 20 
Indices 3 & 12 with values 80 & 20 
Indices 4 & 5 with values 30 & 70 
etc.

【问题讨论】:

  • 那么不要使用堆栈或队列。您的要求不切实际。
  • 这是一道作业题。我已经坚持了好几天了,今晚到期:(
  • 你的导师是否赞成抄袭互联网上的解决方案/想法?
  • 我不是在未经允许的情况下窃取别人的作品,我是在寻求帮助。有区别。

标签: arrays stack queue sum pseudocode


【解决方案1】:

这样的? (显然,这不是解决问题的最有效方法;例如,将所有元素放入哈希中,然后遍历该哈希并检查每个 a[i] 如果哈希包含 x-a[i] 应该更快)

(假设:堆栈支持2个操作:

  • push - 在栈顶添加元素
  • top - 获取栈顶元素的值而不将其从栈中移除)
a = input_array

l = list // list of pairs

s = stack

for i from 0 to length(a)-2:

  s.push(a[i])

  for j from i+1 to length(a)-1:

      if s.top + a[j]==x:

          l.add(pair(s.top,a[j]))

return l

【讨论】:

  • 我是否必须在 if/else 中弹出堆栈中的元素才能使其正常工作?
  • 它们在外循环中被推入堆栈。在 if-else 中,您只检查堆栈顶部的内容。
猜你喜欢
  • 2019-11-23
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 2020-04-17
相关资源
最近更新 更多