首页 > 其他分享 >1818. 绝对差值和

1818. 绝对差值和

时间:2024-09-10 23:25:04浏览次数:11  
标签:right 1818 绝对 差值 delta sorted nums1 nums2 left

题目链接 1818. 绝对差值和
思路 排序+二分
题解链接 运用「二分」找最佳替换方案
关键点 转换为查找最小值delta:对nums1进行排序后,从中二分查找nums2[i]的最接近值(考虑到绝对值,需要检查left & right两个位置)
时间复杂度 \(O(n\log n)\)
空间复杂度 \(O(n)\)

代码实现:

class Solution:
    def minAbsoluteSumDiff(self, nums1: List[int], nums2: List[int]) -> int:
        total = 0
        sorted_ = sorted(nums1)
        n = len(nums1)
        delta = inf
        for i in range(n):
            diff = abs(nums1[i] - nums2[i])
            total += diff

            left, right = -1, n
            while left + 1 < right:
                mid = (left+right) // 2
                if sorted_[mid] < nums2[i]:
                    left = mid
                else:
                    right = mid

            if left >= 0:
                delta = min(delta, abs(sorted_[left] - nums2[i]) - diff)
            if right < n:
                delta = min(delta, abs(sorted_[right] - nums2[i]) - diff)
        return (total + delta) % (10 ** 9 + 7)
Python-标准库
class Solution:
    def minAbsoluteSumDiff(self, nums1: List[int], nums2: List[int]) -> int:
        total = 0
        sorted_ = sorted(nums1)
        n = len(nums1)
        delta = inf
        for i in range(n):
            diff = abs(nums1[i] - nums2[i])
            total += diff

            right = bisect_left(sorted_, nums2[i])
            left = right-1
            if left >= 0:
                delta = min(delta, abs(sorted_[left] - nums2[i]) - diff)
            if right < n:
                delta = min(delta, abs(sorted_[right] - nums2[i]) - diff)
        return (total + delta) % (10 ** 9 + 7)

标签:right,1818,绝对,差值,delta,sorted,nums1,nums2,left
From: https://www.cnblogs.com/WrRan/p/18407458

相关文章

  • Electron - #005 后端node调用文件打开对话框获取绝对路径传递给前端
    文章目录后端node调用文件打开对话框获取绝对路径传递给前端1目标2步骤2.1src-electron/main.js2.2src-electron/preload.js2.3HelloWorld.vue2.4运行工程后端node调用文件打开对话框获取绝对路径传递给前端1目标后端node调用文件打开对话框获取绝对路径......
  • 小鹅通课程视频下载 绝对有效2024
    具体步骤及代码注释(仅支持已购买课程):步骤1:导入所需库importrequests#用于发送HTTP请求frombs4importBeautifulSoup#用于解析HTML步骤2:登录小鹅通账号#输入用户名和密码username='your_username'password='your_password'#发送POST请求,模拟登录login......
  • 获取方形矩阵两串对角线数字之和的差值
    1/**2*获取方形矩阵两串对角线数字之和的差值3*4*1235*4566*7897*8*1+5+9=15;9*3+5+7=15;10*15-15=0;11*@paramarr12*@return13*/14publicstaticInteg......
  • Tita的OKR:您绝对不能错过的 OKR 示例!
    作为孩子,我们经常被告知要“集中精力”学习才能取得成功。当我们进入企业界时,这种集中或专注的原则经常被忘记。研究表明,拥有具体的目标可以带来更高的绩效和成功的目标实现。令人惊讶的是,伦敦商学院进行的一项研究显示,在接受调查的11,000名高级管理人员中,只有三分之一能够列出......
  • 代码随想录算法训练营第十九天| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数
    530.二叉搜索树的最小绝对差1.这题的关键在于二叉搜索树的中序遍历就是有序序列。classSolution{private:vector<int>vec;voidtraversal(TreeNode*root){if(root==NULL)return;//中序遍历树,得到有序序列traversal(root->le......
  • 鸿蒙界面开发(三):层叠布局&绝对定位
    层叠布局——Stack容器组件层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。层叠布局具有......
  • Robot_localization,将NED imu转为相对、绝对航向的 “ENU“ 数据
    Robot_localization,将NEDimu转为相对、绝对航向的"ENU"数据文章约定:谈及NED、ENU、NWU坐标系都是指的xyz对应顺序ROS中,xyz轴对应红、绿、蓝如有错误,请包容,以及麻烦在评论区勘误书山有路勤为径,学海无涯苦作舟1.问题来源使用robot_localization进行:imu融合gps......
  • SciTech-BigDataAIML-LLM-PE(Positional Encoding)位置编码: Absolute(绝对)Position
    SciTech-BigDataAIML-LLMPE(PositionalEncoding)位置编码:1Absolute(绝对)Position2Relative(相对)Position3Rotate(旋转)Position......
  • 利用python下载小鹅通课程视频的方法(已购) 绝对有效2024
    1、先找到视频对应的红框里的地址,网页右键,审查元素。2、打开地址,下载视频对应文件,使用记事本打开,查看文件内容。3、使用Python解析文件里的url,进行视频下载。importrequestsimportrefromCrypto.CipherimportAESdefm3u8(url):header={'User-Agen......
  • C++ 获取Linux 服务器CPU占用率+内存空闲率(亲测绝对可以运行)
    转自:C++获取Linux服务器CPU占用率+内存空闲率(亲测绝对可以运行)-远征i-博客园(cnblogs.com)代码来自网络,部分修改,亲测绝对可用C++:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<unistd.h>usingnamespacestd;type......