C 求数组中两个不同元素之间的最小距离

C 求数组中两个不同元素之间的最小距离,c,algorithm,C,Algorithm,我尝试使用对数组排序并返回数组的第二个元素和第一个元素之间的差来解决以下问题。 但是它没有通过整个测试用例,正确率为42% 这种做法错了吗 您的方法会遗漏一些情况,例如: 如果数组由[2,3,0,2]->后期排序组成,则将有[0,2,2,3]。 现在使用您的方法,您将返回“2”,而答案是“0” 同样,您的方法可能会忽略时间复杂性约束 要解决这个问题,您可以使用修改后的合并排序,它的最坏情况复杂性为O(nlog(n)) 尝试下面的代码,尽管它是用Javascript编写的,但您可以找出背后的逻辑。

我尝试使用对数组排序并返回数组的第二个元素和第一个元素之间的差来解决以下问题。 但是它没有通过整个测试用例,正确率为42%

这种做法错了吗


您的方法会遗漏一些情况,例如:

  • 如果数组由[2,3,0,2]->后期排序组成,则将有[0,2,2,3]。 现在使用您的方法,您将返回“2”,而答案是“0”

  • 同样,您的方法可能会忽略时间复杂性约束

  • 要解决这个问题,您可以使用修改后的合并排序,它的最坏情况复杂性为O(nlog(n))

    尝试下面的代码,尽管它是用Javascript编写的,但您可以找出背后的逻辑。我希望这能解决您的问题

    let dist=-1;
    功能检查区(a、b){
    设cnt=Math.abs(a-b);
    如果(cnt如果(l)比较sortef数组中的所有对并最小化。在[7,2,4,8]数组上使用纸和笔尝试您的方法,看看会发生什么。收到了,谢谢。请不要发布(小得难以理解)文本图像-将文本复制到问题中。排序数组可以是解决方案的一部分,但按排序顺序排列的第一个和第二个元素之间的最小差异并不总是存在。排序将问题时间复杂性从O(N²)降低到O(N.logN)-对于较小的数组(例如100个元素)来说,这一点都不重要,但对于较大的数组(例如有一百万个条目的数组)来说,这一点非常重要。测量结果会告诉你盈亏平衡点在哪里。如果你发现了相同的数字,你可以提前停止搜索-差异不会小于零。欢迎使用堆栈溢出。请稍后阅读和页面。使用Javascript代码回答C中的问题时要谨慎。这并不总是一个好的选择-最好使用C。您可以通过将
    dist=-1
    初始化设置为数组中任意两个成员之间的绝对差,然后再使用vercall
    checkDist()
    。感谢Jonathan提供的提示。Jonathan一定会阅读“关于和如何回答页面”,并且会注意问题中使用的语言。