【LeetCode】1818. 绝对差值和
题目
给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。
数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。
你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。
在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余 后返回。
|x| 定义为:
如果 x >= 0 ,值为 x ,或者
如果 x <= 0 ,值为 -x
示例 1:
输入: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
示例 2:
输入:nums1 = [2,4,6,8,10], nums2 = [2,4,6,8,10]
输出:0
解释:nums1 和 nums2 相等,所以不用替换元素。绝对差值和为 0
示例 3:
输入: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
题解
因为最多只能改变一个值
所以对于任何一个i,只有一个j满足条件
我们的任务就是找到一个使得|nums1[i] - nums2[i]| - |nums1[j] - nums2[i]|值最大的j
class Solution {public:const int mod = 1000000007;int minAbsoluteSumDiff(vector<int>& nums1, vector<int>& nums2) {vector<int> tmp(nums1);sort(tmp.begin(),tmp.end());int sum = 0;int len = nums1.size();int res = 0;for(int i=0;i<len;i++){int cha = abs(nums1[i] - nums2[i]);sum = (sum+cha)%mod;if(cha==0)continue;int index = lower_bound(tmp.cbegin(),tmp.cend(),nums2[i]) - tmp.cbegin();if(index < len)res = max(res,cha - abs(tmp[index] - nums2[i]));if(index > 0)res = max(res,cha - abs(tmp[index-1] - nums2[i]));}return (sum - res + mod)%mod;}
};
【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 的 绝对差 ...
- 力扣—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 ...
最新文章
- SD-WAN — 核心能力
- 分布式理论(一) - CAP定理
- iOS开发 Xcode8中遇到的问题及改动
- python标准库time_Python3标准库:time时钟时间
- SAP UI5 未来发展的趋势之一:拥抱 TypeScript
- c语言按照字节读取任何文件,【文件操作】【按字节读取】求鉴定问题……
- 分享一个非常不错的SSH工具
- Java知识系统回顾整理01基础01第一个程序05Eclipse中运行Java程序
- 从整体上看UML——思维导图
- html日期选择器小日历样式,9 款样式华丽的 jQuery 日期选择和日历控件
- amd cpu 安卓模拟器_AMD的CPU如何运行安卓模拟器?
- 自我介绍到底有多重要?如何做好自我介绍?
- 少儿编程 电子学会图形化编程等级考试Scratch四级真题解析(判断题)2022年3月
- 开源·共享·创新|2020年中国.NET开发者大会圆满收官!
- linux ubuntu bionic,在Ubuntu 18.04 Bionic Beaver Linux上安装和设置KVM
- 00后面试华为软件测试工程师,竭尽全力拿到15K。。。。。
- 【架构师-系统设计】理解分布式系统的CAP和BASE理论
- 这些软件可以快速实现图片翻译文字
- 2019-信息安全管理与评估
- vim无法退出保存的问题(:wq不生效)
热门文章
- BUGKU (Take the maze)
- SSD系列算法原理讲解----(1)SSD系列算法介绍(主干网络、多尺度Feature Map预测)(笔记)
- java 线性回归_java实现简单线性回归
- TCP 的 NACK 与 SACK
- textarea 中如何阻止默认的回车换行事件?
- 基于matlab的傅里叶变换
- Object.assign()用法和特性
- ReleaseCapture 以及 SetCapture 函数 及其应用
- 提示用户更改计算机密码,验证你的Microsoft账户 温馨提示:在个人电脑上更改微软账户密码...
- 通达信大智慧同花顺益盟操盘手股票指标公式编写从入门到精通-七天学会指标编写