一、题目引出
问题:给你个整数数组 arr,其中每个元素都 不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
例:
输入:arr = [4,2,1,3]
输出:[[1,2],[2,3],[3,4]]
输入:arr = [1,3,6,10,15]
输出:[[1,3]]
这次题目也是在数组上面进行操作,通过几次题目可以看出来对于数组的使用还是挺重要的。
二、解题思路
首先看题目中按升序返回,就很容易想到几种对于数组元素排序的方法——冒泡排序、快排、插入排序等;此处我用的是冒泡排序;除此之外,我相信很多人都是卡在这个List>上,它跟二维数组十分相似,但不是像二维数组那样维度固定,因此可以用它来保存具有最小绝对差的元素对。
三、List
- >用法
创建:
List
> 数组名=new ArrayList
>();
例如:
List
> listList=new ArrayList
>()
存放数据(添加)
Listlist = new ArrayList<>(); list.add(1);//将元素1加入到list数组中 listList.add(list);//将数组list加入到数组listList中,也就是数组的数组
读取数组中元素
listList.get(1).get(2) ; //先get行号,后get 列号
一维数组读取某一位元素:直接用get(num),其中num代表要读取哪一位
四、源代码
package LeetCode;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Solution {
public static void bubbeSort(int []arry){ //冒泡排序
int temp;
for(int i=0;ii;j--){
if(arry[i+1]> minimumAbsDifference(int[] arr) {
bubbeSort(arr);
//找出最小绝对差
int min = arr[1] - arr[0];
for (int i=2;i> listList = new ArrayList<>();
for (int i=1; i list = new ArrayList<>();
list.add(arr[i-1]);//将元素加入到数组中
list.add(arr[i]);
listList.add(list);//将数组list加入到listList中
}
}
return listList;
}
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int []arr1 = new int[4];
System.out.println("向数组中输入四个元素:");
for(int i =0 ; i
五、总结
通过几次的做题发现,题目的出发都是千变万化,而且总会有你的知识盲区,所以还是得掌握好基础,这样才能避免做一个,第二个还是不会;同样每天得积累非常的重要,慢慢得知识盲区也一定会随之减少,所以我们一定要坚持每天学一点知识,累计成一座知识得大山。



