算法:5、绝对差值和
题目:
给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。
数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。
你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。
在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余 后返回。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-absolute-sum-difference
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
class Solution:
def minAbsoluteSumDiff(self, nums1: List[int], nums2: List[int]) -> int:
n_len = len(nums1)
mod = 10**9 + 7
if n_len == 1:
return abs(nums1[0] - nums2[0])
right_dict = {}
max_diff = 0
diff_sum = 0
n1_sort = nums1.copy()
n1_sort.sort()
for i in range(0, n_len):
left_val = nums1[i]
right_val = nums2[i]
diff = abs(left_val - right_val)
diff_sum += diff
if diff > 0:
if right_val not in right_dict:
right_dict[right_val] = diff
# 查找最接近的元素
start_index = 0
end_index = n_len - 1
v_diff = diff
# 二分法查找
while True:
if (start_index + 1) == end_index:
mid_diff = min(abs(right_val - n1_sort[start_index]), abs(right_val - n1_sort[end_index]))
if mid_diff < v_diff:
v_diff = mid_diff
break
mid_index = (start_index + end_index) // 2
# 减去中间值
mid_diff = abs(right_val - n1_sort[mid_index])
if mid_diff < v_diff:
v_diff = mid_diff
# diff 为0时,终止循环
if v_diff == 0:
break
# 移动开始或结束位置
if n1_sort[mid_index] > right_val:
end_index = mid_index
elif n1_sort[mid_index] < right_val:
start_index = mid_index
if v_diff < diff:
right_dict[right_val] = v_diff
# 最大减少的值
v_max_diff = abs(diff - right_dict[right_val])
if v_max_diff > max_diff:
max_diff = v_max_diff
diff_sum -= max_diff
return diff_sum % mod
算法:5、绝对差值和相关推荐
- PS图层混合算法之六(差值,溶解, 排除)
差值模式: 查看每个通道中的颜色信息,比较底色和绘图色,用较亮的像素点的像素值减去较暗的像素点的像素值.与白色混合将使底色反相:与黑色混合则不产生变化. 排除模式可生成和差值模式相似的效果,但比差值模 ...
- ML之Hash_HamMingDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用汉明距离算法进行判别
ML之Hash_HamMingDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用汉明距离算法进行判别 目录 输出结果 代码实现 相关文章 ML之相似度计算: ...
- ML之Hash_EditDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用编辑距离算法进行判别
ML之Hash_EditDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用编辑距离算法进行判别 目录 输出结果 代码实现 相关文章 ML之相似度计算:图像数 ...
- java 数组中差值最大数对,[算法题] 求数组有序后相邻元素之间的最大差值
1. 题目要求 给定无序数组(此数组是long类型的数组,但以下示例只列一些小一点的数),例如: [3, 1, 12, 9, 3, 7, 1, 4, 7, 8, 10] 求数组有序后相邻元素之间的最大 ...
- 相似图像搜索的哈希算法思想及实现(差值哈希算法和均值哈希算法)
图像相似度比较哈希算法: 什么是哈希(Hash)? • 散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小 的数字"指纹"的方法.散 ...
- python表示差值_Python算法之差值查找-Testfan打卡学测开0116
原标题:Python算法之差值查找-Testfan打卡学测开0116 本期技术分享讲师:Arthur老师 题目内容:什么是差值查找? 解析: 之前我们介绍过"二分查找"发.考虑一个 ...
- PS算法:正片疊底/溶解/柔光/差值/滤色
Prolog:對比度算法128 + (Value - 128) * nPercent / 100 由RGB颜色分量 Value 和对比度调整数值计算新的颜色分量值 正片叠底(multiply):将两个 ...
- [算法][面试题]疯狂队列-排列使得序列两两间“差值的绝对值“之和最大
题目 给定一个数列A,数列中相邻两项的差值的绝对值定义为"疯狂值".任意排序这个数列,使得整个数列的"疯狂值"最大,输出这个最大值. 样例 输入 5 10 25 ...
- ibm db2获取目标时间与当前时间的差值_高帧频视觉实时目标检测系统
基于机器视觉的智能目标检测系统应用非常广泛,尤其在航天军工等领域中,经常涉及高速目标的实时检测和控制,对目标检测的智能性和实时性提出了更严格的要求.在这种应用中,视觉系统相对雷达.声纳具有信息量大.抗 ...
- 影像组学视频学习笔记(33)-使用SimpleITK实现医学影像差值、Li‘s have a solution and plan.
作者:北欧森林 链接:https://www.jianshu.com/p/afcd06221ea4 来源:简书,已获转载授权 RadiomicsWorld.com "影像组学世界" ...
最新文章
- 算法-----------接雨水(Java版本)
- springboot 整合mybatis_SpringBoot整合MyBatis框架快速入门
- 倩女手游服务器维护,倩女手游7月28日服务器在线维护公告
- eclipse java import_java – Eclipse:将源代码的import文件夹导入...
- PHP - 5.4 Array dereferencing 数组值
- Android开发过程为C文件或者C++文件配置打印Logcat信息
- C#开发Android应用实战
- html图片上传框架,HTML+JS图片上传源码
- 大学生就业观念的调查与分析
- 【Leetcode Medium】1318. Minimum Flips to Make a OR b Equal to c
- NetBIOS name
- 圣思园张龙-Java SE 第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)
- 解决pip无法更新问题
- 微擎人人商城 后台开启WAP访问后 微信浏览器 跳过授权 手机号密码登录
- 高级建模方法(Gurobi):线性化、分段线性函数、逻辑变量/约束
- Go语言笔记 | 01-为什么要学Go语言
- 智能小车系列文章之小车简介
- JS String.toDate
- 什么是NP问题,NP-complete和NP-hard问题.
- 错误1:Archive for required library: XXXXXXXXcannot be read or is not a valid ZIP file