1818. 绝对差值和

思路:排序 + 二分查找
Java中没有结构体,使用类来替代具体的结构体。

时间复杂度:O(log n)
空间复杂度:O(n)

  1. 先计算数字1与数字2两个数的差值,保存数组2里面数字和数字1与数字2的差值的对应关系。
  2. 将数组1排序,采用二分查找去找最接近数字2的数字1。
  3. 重新计算差值,保存两个差值的差。
  4. 只保留两个差值的差的最大值。
  5. 如果数字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. 绝对差值和相关推荐

  1. leetcode 1818. 绝对差值和

    给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i ...

  2. LeetCode 1818. 绝对差值和(二分查找)

    文章目录 1. 题目 2. 解题 前三题,拼手速.最后一题暴力超时. 1. 题目 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差 ...

  3. 【LeetCode】1818. 绝对差值和

    题目 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= ...

  4. 力扣—1818.绝对差值和

    题目: 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 < ...

  5. 力扣 1818. 绝对差值和 数学 二分

    https://leetcode-cn.com/problems/minimum-absolute-sum-difference/ 思路:首先计算sum=∑i=0n∣ai−bi∣sum=\sum_{i ...

  6. leetcode 1818 绝对值,排序,二分法,最大值

    1818. 绝对差值和 难度中等130收藏分享切换为英文接收动态反馈 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为 ...

  7. LeetCode 910. 最小差值 II(贪心)

    1. 题目 给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中. 在此过程之后,我们得到一些数组 B. 返回 B 的最大值和 B ...

  8. LeetCode 908. 最小差值 I

    1. 题目 给定一个整数数组 A,对于每个整数 A[i],我们可以选择任意 x 满足 -K <= x <= K,并将 x 加到 A[i] 中. 在此过程之后,我们得到一些数组 B. 返回 ...

  9. sql 差值_SQL_LeetCode的连续性题目

    本篇分享一道来自于leetcode中文版第180题,关于SQL处理连续性的题目. 原题目:编写一个 SQL 查询,查找所有至少连续出现三次的数字. 数据表Logs如下: ID Num 1 1 2 1 ...

  10. 21-7-14 绝对差值和

    绝对差值和 难度[中等] 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n . 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i ...

最新文章

  1. 根据xml 文件生成 xsd文件 以及相关测试方法
  2. 你面试稳了!通关LeetCode刷题完整攻略,省时又高效
  3. 视觉系统的演化之旅——视觉器官、光感受器及视觉分子
  4. springboot RestTemplate httpclient
  5. 钢铁侠要为Facebook的智能管家配音,really?
  6. vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个
  7. 3.redis集群部署3主3从
  8. Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案
  9. caffe的googlenet模型使用
  10. java多线程开发--语法糖之synchronized关键字
  11. 最全的视频格式分类详解(很全面)
  12. python爬虫qq付费音乐_Python 应用爬虫下载QQ音乐
  13. 【寒江雪】Go实现命令模式
  14. i12蓝牙耳机怎么设置成中文_耳朵里的小精灵——乐迈车载智能蓝牙耳机
  15. fri信号重构-sinc核滤波
  16. 后天就是七夕节,你准备好了吗?送上几个七夕代码,展示你技能的时候到了!
  17. 35岁,转行AI年薪100万,牛逼的人生无需解释
  18. 【操作系统】第十一章死锁与进程通信
  19. 如何用手机访问自己的网站
  20. 远程无法连接到oracle数据库服务器,无法连接到远程Oracle数据库(11g)

热门文章

  1. Android:获取并制作矢量图动画
  2. Gradle入门教程学习笔记
  3. CIS-Linux Centos7最新基线标准进行系统层面基线检测
  4. 电气simulink常用模块_自动化设备电气图纸常用元件符号
  5. ios迅雷php格式,2019最新最全iOS迅雷文件提取方法
  6. 电机与拖动matlab仿真,Matlab仿真软件在电机与拖动中的应用
  7. CCF-CSP刷题网站推荐(含100分答案)
  8. 一、Geos库的安装和计算多边形是否相交
  9. cad vba 打开文件对话框_基于VBA的AutoCAD二次开发之批量替换DWG文件的指定范围(上)...
  10. 微信小程序下拉刷新在真机上不回缩问题的解决方法