Leetcode 1818. 绝对差值和(DAY 187)---- 二分查找学习期

约定不等于承诺〃 2022-09-15 11:52 235阅读 0赞

文章目录

    • 原题题目
    • 代码实现(首刷自解)

原题题目


在这里插入图片描述


代码实现(首刷自解)


  1. class Solution {
  2. public:
  3. int minAbsoluteSumDiff(vector<int>& nums1, vector<int>& nums2) {
  4. vector<int> tmp(nums1);
  5. sort(tmp.begin(),tmp.end());
  6. int dif = 0;
  7. long ret = 0;
  8. for(int i=0;i<nums1.size();++i)
  9. {
  10. int maxnum = abs(nums2[i] - nums1[i]);
  11. auto pos = lower_bound(tmp.begin(),tmp.end(),nums2[i]) - tmp.begin();
  12. if(pos != tmp.size()) dif = max(dif,maxnum - abs(nums2[i] - tmp[pos]));
  13. if(--pos >= 0) dif = max(dif,maxnum - abs(nums2[i] - tmp[pos]));
  14. }
  15. for(int i=0;i<nums1.size();++i)
  16. ret = (ret + abs(nums2[i] - nums1[i]));
  17. return (ret - dif) % 1000000007;
  18. }
  19. };

发表评论

表情:
评论列表 (有 0 条评论,235人围观)

还没有评论,来说两句吧...

相关阅读