gpt4 book ai didi

java - HackerRank 最接近的数字

转载 作者:行者123 更新时间:2023-12-02 01:48:03 25 4
gpt4 key购买 nike

给定一个未排序的整数列表,找到它们之间绝对差最小的一对元素。如果有多对,请全部找到。

我的推理是将每个:arr[j] - arr[i]lowest 进行比较,如果它小于或等于该值,则将该值添加到数组最低,但它不起作用。

代码:

static int[] closestNumbers(int[] arr) {
int lowest = arr[1] - arr[0];
int lowestArray[] = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (Math.abs(arr[j] - arr[i]) < lowest) {
lowest = Math.abs(arr[j] - arr[i]);
}
}
}

for (int i = 0; i < arr.length; i++) {
if (arr[i] == lowest) {
lowestArray[i] = arr[i];
}
}
return lowestArray;
}

最佳答案

以下是所需的代码:-

import java.util.*; 

class GFG
{

// Returns minimum difference between
// any two pair in arr[0..n-1]
static void printMinDiffPairs(int arr[], int n)
{
if (n <= 1)
return;

// Sort array elements
Arrays.sort(arr);

// Compare differences of adjacent
// pairs to find the minimum difference.
int minDiff = arr[1] - arr[0];
for (int i = 2; i < n; i++)
minDiff = Math.min(minDiff, arr[i] - arr[i-1]);

// Traverse array again and print all pairs
// with difference as minDiff.
for ( int i = 1; i < n; i++)
{
if ((arr[i] - arr[i-1]) == minDiff)
{
System.out.print("(" + arr[i-1] + ", "
+ arr[i] + ")," );
}
}
}

// Driver code
public static void main (String[] args)
{
int arr[] = {5, 3, 2, 4, 1};
int n = arr.length;
printMinDiffPairs(arr, n);
}
}

上述程序是否处理重复项?

上面的程序不处理像{x, x, x}这样的情况。对于这种情况,预期输出 (x, x), (x, x), (x, x),但上面的程序打印 (x, x), (x, x)

关于java - HackerRank 最接近的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com