当前位置: 首页 > 面试题库 >

如何编写O(n ^ 2)方法来查找两点之间的最大距离

徐鸿达
2023-03-14
问题内容

我有一个数组 int [] nums = {5, 1, 6, 10, 4, 7, 3, 9, 2}

我想在O(n ^ 2)时间中找到该数组中最小和最大数字之间的距离。根据分配要求,它需要O(n ^
2)时间。为此,我正在编写一种名为的方法quadratic。到目前为止,我已经提出了以下代码。

public static int quadratic(int[] nums) {

    int max = nums[0];
    int min = nums[0];

    for (int i = 0; i < nums.length; i++) {
        for (int j = 0; j < nums.length; j++) {

            if (nums[i] > nums[j])
                max = nums[i];
            else if (nums[i] < nums[j])
                min = nums[i];  
            }
        }

    int maxDifference = max - min;
    return maxDifference; 
}

问题是,当我使用上述数组运行该方法时,我得到的最大差为0。我期望9,因为最大的数字是10,最小的数字是1。10-1 = 9。

我的问题是,有人可以告诉我如何更改代码,以便正确计算最小和最大数字之间的最大距离吗?


问题答案:

您正在覆盖最大和最小。

if (nums[i] > nums[j])
    max = nums[i];
else if (nums[i] < nums[j])
    min = nums[i];  
}

您需要将当前数字与已设置的最大值/最小值进行比较。相反,您将当前数字与另一个数字进行比较,如果条件为true,则覆盖max /
min。在此示例中,最大值是10,但是后来您检查了if(9>2),这是对的,因此您将其更改max = 10max = 9

这里是O(n ^ 2)时间,外循环完全没用。

public static int quadratic(int[] nums) {

    int max = Integer.MIN_VALUE;
    int min = Integer.MAX_VALUE;

    for (int i = 0; i < nums.length; i++) {
        for (int j = 0; j < nums.length; j++) {

            if (nums[j] > max)
                max = nums[j];
            if (nums[j] < min)
                min = nums[j];  
            }
        }
    System.out.println(max + " " + min);
    int maxDifference = max - min;
    return maxDifference; 
}


 类似资料:
  • 问题内容: 目前,我在mysql数据库中的位置不足一百万,所有位置都包含经度和纬度信息。 我试图通过查询找到一个点和许多其他点之间的距离。它并没有我想要的那么快,尤其是每秒100次以上的命中。 是否有更快的查询,或者可能是比mysql更快的系统?我正在使用此查询: 注意:提供的距离以 英里为单位 。如果您需要 公里 ,请使用代替。 问题答案: 使用表中数据类型的值创建点。从Mysql 5.7.5开

  • 问题内容: 假设我有x1,y1,还有x2,y2。 我如何找到它们之间的距离?这是一个简单的数学函数,但是此在线代码段吗? 问题答案: dist = sqrt( (x2 - x1)2 + (y2 - y1)2 ) 正如其他人指出的那样,您也可以使用等效的内置函数:

  • 我试图找到树中两个节点之间的最大距离。这是我的程序: 程序似乎正在运行;但是没有为一些测试用例显示正确的输出。我采取的方法是: 求根节点的子节点数(我一直认为根节点为0)。 找到每个子树的最大深度(尽可能多的子树,因为有根节点的子节点)。 将每个子树的最大深度存储在中,对其进行排序并打印最后两个值的总和。 有人能指出我程序中的错误吗?

  • l和r分别是区间的起点和终点。

  • 假设我有一个包含整数的数组。 如何找到大小的子集,使得子集中所有整数对之间的距离,我的意思是它们在最远的距离。 示例:数组和, ,最小距离为10和6之间的<错误的子集: ,最小距离为 ,最小距离为 我想到了一个解决办法: 1) 排序数组2)选择一个[0],现在在数组中查找ceil(a[0])=Y。。。。然后ceil(Y

  • 我需要一个算法来找到地图上两点之间的最短路径,其中道路距离由一个数字表示。 给出的内容:开始城市A目的地城市Z 城市间距离列表: A-B: 10 F-K: 23 R-M: 8 K-O: 40 Z-P: 18 J-K: 25 D-B: 11 M-A: 8 P-R: 15 我想我可以用Dijkstra的算法,但是它能找到到所有目的地的最短距离。不仅仅是一个。 如有任何建议,我们将不胜感激。