从数组中找到2个数字的最小绝对和

时间:2019-07-07 06:30:59

标签: arrays algorithm

问题

给出一个未排序的数组,该数组由任意整数(正,负,零)组成,找到2个绝对值之和最小的数字。

例如

  • http://jsfiddle.net/VScFS/57/ -> [-60, 40, -100, -7, 1, 3, 110, 0, 7, -4, 90]
  • |7 + -7| = 0-> [-60, 40, -100, -7, 1, 3, 110, 4, 59]

当前解决方案

步骤:

  • 首先对数组进行排序。
  • 然后循环从两端开始,朝中间,将左指针标记为|-60 + 59| = 1,右指针标记为pa
    • while(pb> pa)
      • 如果sum> 0,pb-
      • 否则,如果sum <0,pa ++
      • 否则返回0

提示:

  • 上面的步骤中省略了计算和跟踪最小绝对和的代码。

时间复杂度: pb,由于排序。


问题是

  • 是否有任何O(n*lg(n))解决方案?

0 个答案:

没有答案
相关问题