LeetCode -- 1818. 绝对差值和
1818. 绝对差值和
思路:排序 + 二分查找
Java中没有结构体,使用类来替代具体的结构体。
时间复杂度:O(log n)
空间复杂度:O(n)
- 先计算数字1与数字2两个数的差值,保存数组2里面数字和数字1与数字2的差值的对应关系。
- 将数组1排序,采用二分查找去找最接近数字2的数字1。
- 重新计算差值,保存两个差值的差。
- 只保留两个差值的差的最大值。
- 如果数字1与数字2两个数的差值小于保存下来的最大的值,证明即使替换此时的数字1,也无法贡献更小的差值,则不计算。
比如:100,1 一组数据,差值为99,将100 替换为1,差值变化值为98。
第二组为10,1。差值为9,小于98,此时无论将10替换为1 - 9 中任何数值,都无法贡献更大的差值变化值,故不计算。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** 1818. 绝对差值和**/
public class Solution1818 {public static class NumPair{public int nums2;public int difference;}private final static int MOD = 1000000007;public int minAbsoluteSumDiff(int[] nums1, int[] nums2) {int len = nums1.length;List<NumPair> numPairs = new ArrayList<>();for (int i = 0; i < len; i++) {NumPair numPair = new NumPair();numPair.nums2 = nums2[i];numPair.difference = Math.abs(nums1[i] - nums2[i]);numPairs.add(numPair);}Arrays.sort(nums1);int sum = 0;int maxn =0;for (NumPair numPair : numPairs) {sum = (sum + numPair.difference) % MOD;if (maxn <= numPair.difference) {List<Integer> replaceNumber = binarySearch(nums1, numPair.nums2);for (Integer integer : replaceNumber) {maxn = Math.max(maxn, numPair.difference - (Math.abs(numPair.nums2 - integer)));}}}return (sum - maxn + MOD) % MOD;}public List<Integer> binarySearch(int[] rec, int target) {int low = 0, high = rec.length - 1;List<Integer> res = new ArrayList<>();if (rec[high] < target) {res.add(rec[high]);return res;}while (low < high) {int mid = (high - low) / 2 + low;if (rec[mid] < target) {low = mid + 1;} else {high = mid;}}res.add(rec[low]);if (low > 0) {res.add(rec[low - 1]);}return res;}public static void main(String[] args) {Solution1818 solution1818 = new Solution1818();System.out.println(solution1818.minAbsoluteSumDiff(new int[]{1,7,5},new int[]{2,3,5}));System.out.println(solution1818.minAbsoluteSumDiff(new int[]{2,100,4,4,2,7},new int[]{93,9,5,1,7,4}));}
}
LeetCode -- 1818. 绝对差值和相关推荐
- leetcode 1818. 绝对差值和
给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i ...
- LeetCode 1818. 绝对差值和(二分查找)
文章目录 1. 题目 2. 解题 前三题,拼手速.最后一题暴力超时. 1. 题目 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差 ...
- 【LeetCode】1818. 绝对差值和
题目 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= ...
- 力扣—1818.绝对差值和
题目: 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 < ...
- 力扣 1818. 绝对差值和 数学 二分
https://leetcode-cn.com/problems/minimum-absolute-sum-difference/ 思路:首先计算sum=∑i=0n∣ai−bi∣sum=\sum_{i ...
- leetcode 1818 绝对值,排序,二分法,最大值
1818. 绝对差值和 难度中等130收藏分享切换为英文接收动态反馈 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为 ...
- LeetCode 910. 最小差值 II(贪心)
1. 题目 给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中. 在此过程之后,我们得到一些数组 B. 返回 B 的最大值和 B ...
- LeetCode 908. 最小差值 I
1. 题目 给定一个整数数组 A,对于每个整数 A[i],我们可以选择任意 x 满足 -K <= x <= K,并将 x 加到 A[i] 中. 在此过程之后,我们得到一些数组 B. 返回 ...
- sql 差值_SQL_LeetCode的连续性题目
本篇分享一道来自于leetcode中文版第180题,关于SQL处理连续性的题目. 原题目:编写一个 SQL 查询,查找所有至少连续出现三次的数字. 数据表Logs如下: ID Num 1 1 2 1 ...
- 21-7-14 绝对差值和
绝对差值和 难度[中等] 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i ...
最新文章
- 根据xml 文件生成 xsd文件 以及相关测试方法
- 你面试稳了!通关LeetCode刷题完整攻略,省时又高效
- 视觉系统的演化之旅——视觉器官、光感受器及视觉分子
- springboot RestTemplate httpclient
- 钢铁侠要为Facebook的智能管家配音,really?
- vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个
- 3.redis集群部署3主3从
- Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案
- caffe的googlenet模型使用
- java多线程开发--语法糖之synchronized关键字
- 最全的视频格式分类详解(很全面)
- python爬虫qq付费音乐_Python 应用爬虫下载QQ音乐
- 【寒江雪】Go实现命令模式
- i12蓝牙耳机怎么设置成中文_耳朵里的小精灵——乐迈车载智能蓝牙耳机
- fri信号重构-sinc核滤波
- 后天就是七夕节,你准备好了吗?送上几个七夕代码,展示你技能的时候到了!
- 35岁,转行AI年薪100万,牛逼的人生无需解释
- 【操作系统】第十一章死锁与进程通信
- 如何用手机访问自己的网站
- 远程无法连接到oracle数据库服务器,无法连接到远程Oracle数据库(11g)
热门文章
- Android:获取并制作矢量图动画
- Gradle入门教程学习笔记
- CIS-Linux Centos7最新基线标准进行系统层面基线检测
- 电气simulink常用模块_自动化设备电气图纸常用元件符号
- ios迅雷php格式,2019最新最全iOS迅雷文件提取方法
- 电机与拖动matlab仿真,Matlab仿真软件在电机与拖动中的应用
- CCF-CSP刷题网站推荐(含100分答案)
- 一、Geos库的安装和计算多边形是否相交
- cad vba 打开文件对话框_基于VBA的AutoCAD二次开发之批量替换DWG文件的指定范围(上)...
- 微信小程序下拉刷新在真机上不回缩问题的解决方法