LeetCode.1200-最小绝对值差(Minimum Absolute Difference)
这是小川的第418次更新,第451篇原创
看题和准备
今天介绍的是LeetCode算法题中Easy级别的第268题(顺位题号是1200)。给定一个由不同的整数组成的数组arr,找到所有对元素,其中任意两个元素的绝对差值都最小。
以升序返回关于配对的列表(相对于配对),每对[a,b]紧随其后:
- a,b来自
arr - a < b
b-a等于arr中任何两个元素的最小绝对差
例如:
输入:arr = [4,2,1,3]
输出:[[1,2],[2,3],[3,4]]
说明:最小绝对差为1。以升序列出所有差等于1的对。
输入:arr = [1,3,6,10,15]
输出:[[1,3]]
输入:arr = [3,8,-10,23,19,-4,-14,27]
输出:[[-14,-10],[19,23],[23,27]]
限制条件:
- 2 <=
arr.length<= 10^5 - -10^6 <=
arr[i]<= 10^6
第一种解法
直接翻译题目即可,分两步走,第一,找到数组arr中的最小绝对差值,通过排序来完成,借助Arrays的sort方法实现,因为绝对值差最小的两个数肯定是相邻越近越小。第二,再次遍历arr数组,将绝对值差等于最小绝对值差的两个元素添加到结果list中去。
public List<List<Integer>> minimumAbsDifference(int[] arr) {
Arrays.sort(arr);
int min = Integer.MAX_VALUE, len = arr.length;
for (int i=1; i<len; i++) {
min = Math.min(min, arr[i]-arr[i-1]);
}
List<List<Integer>> result = new ArrayList<List<Integer>>();
for (int i=1; i<len; i++) {
if (arr[i]-arr[i-1] == min) {
List<Integer> list = new ArrayList<Integer>();
list.add(arr[i-1]);
list.add(arr[i]);
result.add(list);
}
}
return result;
}
第二种解法
针对第一种解法,我们还可以简化下,只使用一个循环。在循环里判断最小绝对值差,如果当前两元素的绝对值小于最小绝对值差,则更新最小绝对值差的值,同时将结果list清空,这里清空list有两种办法,一是重新创建对象,二是使用clear方法,推荐第一种重新创建对象的做法,将两元素存入结果list中。
public List<List<Integer>> minimumAbsDifference2(int[] arr) {
Arrays.sort(arr);Arrays.sort(arr);
int min = Integer.MAX_VALUE, len = arr.length;
List<List<Integer>> result = new ArrayList<List<Integer>>();
for (int i=1; i<len; i++) {
if (arr[i] - arr[i-1] <= min) {
if (arr[i] - arr[i-1] < min) {
min = arr[i] - arr[i-1];
result = new ArrayList<List<Integer>>();
}
result.add(Arrays.asList(arr[i-1], arr[i]));
}
}
return result;
}
小结
算法专题目前已更新LeetCode算法题文章274+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、在看就是对我最大的回报和支持!
LeetCode.1200-最小绝对值差(Minimum Absolute Difference)的更多相关文章
- [Swift]LeetCode530. 二叉搜索树的最小绝对差 | Minimum Absolute Difference in BST
Given a binary search tree with non-negative values, find the minimum absolute difference between va ...
- LeetCode 530. Minimum Absolute Difference in BST (二叉搜索树中最小绝对差)
Given a binary search tree with non-negative values, find the minimum absolute difference between va ...
- [LeetCode] Minimum Absolute Difference in BST 二叉搜索树的最小绝对差
Given a binary search tree with non-negative values, find the minimum absolute difference between va ...
- 【LeetCode】1200. Minimum Absolute Difference 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 日期 题目地址:https://leetcode ...
- C#LeetCode刷题之#530-二叉搜索树的最小绝对差(Minimum Absolute Difference in BST)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4123 访问. 给定一个所有节点为非负值的二叉搜索树,求树中任意两 ...
- 【leetcode】1200. Minimum Absolute Difference
题目如下: Given an array of distinct integers arr, find all pairs of elements with the minimum absolute ...
- LeetCode Minimum Absolute Difference in BST
原题链接在这里:https://leetcode.com/problems/minimum-absolute-difference-in-bst/#/description 题目: Given a b ...
- 【LeetCode】530. Minimum Absolute Difference in BST 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Java解法 Python解法 日期 题目地址:ht ...
- 51. leetcode 530. Minimum Absolute Difference in BST
530. Minimum Absolute Difference in BST Given a binary search tree with non-negative values, find th ...
随机推荐
- 关于博主skywang123456文章——二叉堆(三)之 Java的实现的质疑
博客园博主skywang123456(以下简称s博主)是一个大牛级的人物,相信很多程序员都拜读过他的博客,我也不例外,并且受益匪浅.但是对于文章二叉堆(三)之 Java的实现我有一些疑惑,写在这里,供 ...
- HDU - 5033 Building (单调栈+倍增)
题意:有一排建筑,每座建筑有一定的高度,宽度可以忽略,求在某点的平地上能看到天空的最大角度. 网上的做法基本都是离线的...其实这道题是可以在线做的. 对于向右能看到的最大角度,从右往左倍增维护每个时 ...
- 基于蓝图的完整的Flask项目
其一Flask_Script 安装: pip3 install flask_script flask_script作用: -改变flask的启动方式:python manage.py runserve ...
- 音频转换 wav to wav、mp3或者其它
1.首先介绍一种NAudio 的方式 需要导入 NAudio.dll 下面请看核心代码 using (WaveFileReader reader = new WaveFileReader(in_pat ...
- @Import注解的作用
在@Import注解的参数中可以填写类名,例如@Import(Abc.class),根据类Abc的不同类型,spring容器有以下四种处理方式: 1. 如果Abc类实现了ImportSelector接 ...
- [Python自学] day-18 (2) (MTV架构、Django框架、模板语言)
一.实现一个简单的Web服务器 使用Python标准库提供的独立WSGI服务器来实现MVC架构. 首先,实现一个简单的Web服务器: from wsgiref.simple_server import ...
- addBack() 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器。
addBack() 概述 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器. 如上所述在讨论中的.end(), jQuery对象维护一个堆栈内部来跟踪匹配的元素集合的变化.当一个DOM遍历方法被调 ...
- 快速弄清JavaScript中undefined和null的区别
ES6的7大数据类型里面有这俩玩意:undefined和null,让接触不深的学习者常常产生混淆,这俩玩意的区别在哪呢? 字面意思上来看,undefined是未(被我们)阐明的,未说明的,null则意 ...
- EMS命令
Tibco EMS 初级使用方法小结 http://blog.csdn.net/bincavin/article/details/8290905
- SQL Server text field里面有换行符的时候copy到excel数据会散乱
解决方法: select '"'+convert(varchar(8000),testField)+'"'astestField from testTable 这样虽然结果集里面有 ...