题目简短。
求数组中两数最小差值的绝对值,很容易想到遍历数组,双重循环,时间复杂度O(n²)
代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); // n个正整数
int[] nums = new int[n]; // 存放正整数的数组
for (int i =0;i<n;i++){
nums[i] = scan.nextInt();
}
int minDiff = Math.abs(nums[0] - nums[1]); // 初始化最小差值的绝对值
for (int i =0;i<n-1;i++){
for (int j=i+1;j<n;j++){
int diff = Math.abs(nums[i] - nums[j]);
if (diff<minDiff){
minDiff = diff;
}
}
}
System.out.println(minDiff);
}
}
由于数组长度限长,时间复杂度可以接受。
如果优化,可以先把数组排序,单层循环即可求出相邻两数差值最小。