如何用最短时间找到数组中最小绝对差值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计449个文字,预计阅读时间需要2分钟。
1200.+ 最小绝对差异 + 难度:简单思路:happy:+ 思路:题目并不是要求求得最小绝对差异值吗?我们可以先按照升序进行排序,然后从第二个值开始,每次减去前一个值。并用一个值 min 保存它们两个。
1200. 最小绝对差难度:简单:happy:
思路:题目不是让求最小绝对值差吗?我们可以先按照升序进行排序,然后让下标从第二个值开始,依次去减前一个元素。并用一个值min保存他们两个的差值,同时让它于我们之前设置的一个元素min_value(永远保存最小值)进行比较,如果min=min_value,添加进结果集res。若碰到了跟小的差值min<min_value,那就把之间的结果集清空res.clear(),并再次将min赋值给min_value,同时,重新添加元素。然后输出结果集res。
class Solution {
public List<List<Integer>> minimumAbsDifference(int[] arr) {
//先按照升序进行排序
Arrays.sort(arr);
//创建结果集
List<List<Integer>> res = new ArrayList<>();
//n用来保存arr的长度
int n = arr.length;
//min_value用来保存最小值
int min_value = Integer.MAX_VALUE;
//遍历
for(int i = 1 ;i < n; i++){
//计算差值,并保存给diff
int min = arr[i]-arr[i-1];
if(min <= min_value){
if(min < min_value){
//调用list的clear方法,释放List集合
res.clear();
//把最小值赋值给min_value
min_value = min;
}
//说明都是最小差值,差值都一样类似案例一的情况
res.add(List.of(arr[i-1],arr[i]));
}
}
return res;
}
}
参考代码:2022/7/4
本文共计449个文字,预计阅读时间需要2分钟。
1200.+ 最小绝对差异 + 难度:简单思路:happy:+ 思路:题目并不是要求求得最小绝对差异值吗?我们可以先按照升序进行排序,然后从第二个值开始,每次减去前一个值。并用一个值 min 保存它们两个。
1200. 最小绝对差难度:简单:happy:
思路:题目不是让求最小绝对值差吗?我们可以先按照升序进行排序,然后让下标从第二个值开始,依次去减前一个元素。并用一个值min保存他们两个的差值,同时让它于我们之前设置的一个元素min_value(永远保存最小值)进行比较,如果min=min_value,添加进结果集res。若碰到了跟小的差值min<min_value,那就把之间的结果集清空res.clear(),并再次将min赋值给min_value,同时,重新添加元素。然后输出结果集res。
class Solution {
public List<List<Integer>> minimumAbsDifference(int[] arr) {
//先按照升序进行排序
Arrays.sort(arr);
//创建结果集
List<List<Integer>> res = new ArrayList<>();
//n用来保存arr的长度
int n = arr.length;
//min_value用来保存最小值
int min_value = Integer.MAX_VALUE;
//遍历
for(int i = 1 ;i < n; i++){
//计算差值,并保存给diff
int min = arr[i]-arr[i-1];
if(min <= min_value){
if(min < min_value){
//调用list的clear方法,释放List集合
res.clear();
//把最小值赋值给min_value
min_value = min;
}
//说明都是最小差值,差值都一样类似案例一的情况
res.add(List.of(arr[i-1],arr[i]));
}
}
return res;
}
}
参考代码:2022/7/4

