【问题标题】:Algorithm: Find an order and compare each value in two arrays with same length算法:找到一个顺序并比较两个长度相同的数组中的每个值
【发布时间】:2017-11-06 09:10:17
【问题描述】:

我们假设有两个数组 a[.]b[.] 具有相同的长度 n 并设计一个返回 true如果我们能找到一个订单,

a[0]>b[0], a[1]>b[1], a[2]>b[2] ... a[n-1]>b[n-1]

否则返回false

(例如,{7,9,4},{7,6,3} 对的项目顺序为 {7,9,4} & {6,7,3} 匹配条件,而 {7,9,4,5},{7,6,3,5} 对没有这样的顺序)。

注意:不需要打印订单,只需返回truefalse即可。

NB2:请让算法尽可能高效(O(n) 或更少?)

谢谢大家!

【问题讨论】:

  • 请解释一下你的比较逻辑,e.g. {7,9,4} vs {7,6,3} have an order that {7,9,4} vs {6,7,3} while {7,9,4,5} vs {7,6,3,5} have no order like that)
  • @mayankbisht,感谢您的提醒,我的意思是 {7,9,4} 与 {6,7,3},我们可以像 {7,9,4} vs {6,7,3} 那 7>6, 9>7, 4>3 而对于 {7,9,4,5} 与 {7,6,3,5} 有没有这样的顺序,因为 9>7、7>6、4>3,但 5 不大于 5。我说清楚了吗?

标签: arrays algorithm compare


【解决方案1】:

首先对数组进行排序,如果它不能满足您的需要,则没有其他顺序。希望您可以自己编写代码(这似乎是您的作业)。 可以是 O(nlogn)。

编辑:

或者不排序!只需为每次迭代选择最大值并在条件失败时立即中断/返回。这样,您就不必一直进行排序。 但这是 O(n2)。

希望这会有所帮助。

【讨论】:

  • 感谢您的回答,但不,这不是我的作业。以我的想法,我可以先对它们进行排序,然后进行比较,即复杂性取决于排序算法,QKSORT 可能是 O(n log n),计数排序可能是 O(n),但我认为它有一些限制条件,并且在没有排序的情况下可能更有效。可能是我想太多了:)
  • 如果不是你的作业,那很好:D 编辑以尽量减少复杂性。
  • 你的解决方案的复杂度是 O(n^2) 吗?顺便说一句,感谢您完善描述:D.
  • 是的。如果你可以利用一个高效的排序算法 O(nlogn),并且排序对比较是 O(n),那么这仍然比迭代 O(n2) 好得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2012-02-25
  • 1970-01-01
  • 2021-11-28
  • 2019-06-09
  • 1970-01-01
相关资源
最近更新 更多