leetcode *1818. 绝对差值和(2021.7.14)
【题目】*1818. 绝对差值和
给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。
数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。
你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。
在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余 后返回。
如果 x >= 0 ,值为 x ,或者
如果 x <= 0 ,值为 -x
输入:nums1 = [1,7,5], nums2 = [2,3,5]
输出:3
解释:有两种可能的最优方案:
- 将第二个元素替换为第一个元素:[1,7,5] => [1,1,5] ,或者
- 将第二个元素替换为第三个元素:[1,7,5] => [1,5,5]
两种方案的绝对差值和都是 |1-2| + (|1-3| 或者 |5-3|) + |5-5| = 3
输入:nums1 = [2,4,6,8,10], nums2 = [2,4,6,8,10]
输出:0
解释:nums1 和 nums2 相等,所以不用替换元素。绝对差值和为 0
输入:nums1 = [1,10,4,4,2,7], nums2 = [9,3,5,1,7,4]
输出:20
解释:将第一个元素替换为第二个元素:[1,10,4,4,2,7] => [10,10,4,4,2,7]
绝对差值和为 |10-9| + |10-3| + |4-5| + |4-1| + |2-7| + |7-4| = 20
提示:
n == nums1.length
n == nums2.length
1 <= n <= 105
1 <= nums1[i], nums2[i] <= 105
【解题思路1】二分法
class Solution {public int minAbsoluteSumDiff(int[] nums1, int[] nums2) {int mod = 1000000007;int n = nums1.length;int[] arr = new int[n];System.arraycopy(nums1, 0, arr, 0, n);Arrays.sort(arr);int sum = 0, max = 0;for (int i = 0; i < n; i++) {int diff = Math.abs(nums1[i] - nums2[i]);sum = (sum + diff) % mod;int j = binarySearch(arr, nums2[i]);if (j < n) { // 检查nums1中>=nums2[i]的第一个元素max = Math.max(max, diff - (arr[j] - nums2[i]));}if (j > 0) { // 检查nums1中<nums2[i]的第一个元素max = Math.max(max, diff - (nums2[i] - arr[j - 1]));}}return (sum - max + mod) % mod;}public int binarySearch(int[] arr, int target) {int left = 0, right = arr.length - 1;if (arr[right] < target) {return right + 1;}while (left < right) {int mid = left + (right - left) / 2;if (arr[mid] < target) {left = mid + 1;} else {right = mid;}}return left;}
}
leetcode *1818. 绝对差值和(2021.7.14)相关推荐
- 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 的 绝对差值和 定义为 ...
- 2021牛客第一场H.Hash Function—FFT求差值的卷
https://ac.nowcoder.com/acm/contest/11166/H 官方题解. 比赛时,我们都是用暴力写的,数据太弱了,今天突然想起来,用fft写了一下. 主要使用fft求差值的卷 ...
- 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 ...
最新文章
- 手机 跑linux,你可曾想过在iOS上跑Linux?
- api数据库管理_API管理平台如何增强您的数据科学项目
- VMware共享文件夹遇到的问题
- Qt 编写应用程序升级的配置文件json 生成工具
- cf244D. Match amp; Catch 字符串hash (模板)或 后缀数组。。。
- pb中控件变颜色_基于GDI+技术开发工业仪表盘控件
- Origin好友列表离线的解决办法汇总
- 20210520:人脸识别-口罩mask快速抠取
- 电脑版美食大战老鼠放置html,美食大战老鼠2
- 【MUI框架】学习笔记整理 Day 2
- Flask框架学习笔记10-jinjia2模板继承实例
- php如何解析QQ音乐,QQ音乐解析接口分享
- CentOS 7安装WRF,SMOKE,CMAQ
- html5猜颜色游戏,好看漂亮的html5网页特效学习笔记(3)_猜猜下一个颜色是什么?...
- android手机文件快速扫描,并归类
- 自定义view仿写今日头条点赞动画
- 骁龙888发布,小米11首发,有14家厂商首批搭载!
- Redis的数据结构及底层原理
- 初识二维码 第二讲 二维码的结构
- Kotlin 4. Kotlin 函数注解:Suppress,Volatile, Synchronized, Bindable, RequiresApi,SerializedName
热门文章
- 软件项目工作量评估方法COSMIC重点笔记
- Agilent/安捷伦N6705B直流电源分析仪
- DBUtils工具类的使用方法详解
- 数据库迁移的几种方式
- 《球机3D定位解析及ONVIF实现》
- 大疆无人机实现目标定位
- 经纬度坐标转换为大地2000怎么转换_XOMAP-爬虫[4]-零代码实现将quot;地址quot;转换为“经纬度”坐标及“结构化地址”...
- 地区三级联动数据库(中国行政区划分数据库)【2018年1月】
- pyqt+pyqtgraph+lka(界面制作)
- 每日一题 - 微博系统崩溃,如何解决 ?