【问题标题】:Find the largest difference - O(n)找到最大的差异 - O(n)
【发布时间】:2013-12-17 01:27:00
【问题描述】:

我有一个正在努力解决的编码挑战问题。

给定一个整数数组,遍历该数组(只允许一次)将具有最大值的值连接到正确的值。您正在寻找最大的差异。

[1,2,3,6,3,1,4,3,4,2,3]
  • 1,2,3 转到[4] = 6
  • 3,1 转到 [7] = 4
  • 3 转到 [9] = 4
  • 2 转到 [11] = 3

这个问题的可能解决方案是什么?我用python写了一个解决方案,可以在更长的时间内解决它。它发现最大的区别在这种情况下是1,2,3 go to [4]。然后递归地执行列表的其余部分。您将如何在列表的一次迭代中完成此任务?

【问题讨论】:

  • 为什么2 转到11 而不是3
  • 附带说明,您的输出似乎使用基于 1 的索引,而 Python 使用基于 0 的索引。换句话说,a[4]3,而不是6;这是a[3] 那是6

标签: python arrays algorithm


【解决方案1】:

这里有一个提示,您应该能够将其转换为代码:向后遍历列表。

这样想:3 是每个值右侧的最大值,直到你击中 4。然后 4 是每个值右侧的最大值,直到你击中下一个 6。(如果你应该找到最左边的最大值,就像在你的示例输出中一样,然后直到你点击下一个 4。)等等。

如果您可以使用 O(N) 临时空间,您可以构建最大值列表,然后将其反转以按顺序打印出答案。 (或者您可以递归地执行此操作,这会将 O(N) 临时空间放在堆栈上。)

【讨论】:

  • 我将把它写下来并发布代码。这应该可以,谢谢
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2012-03-08
  • 2013-08-19
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多