您的位置:首页 > 游戏 > 游戏 > 长沙企业网络营销手段_广州互联网营销师_国外直播平台tiktok_优化公司治理结构

长沙企业网络营销手段_广州互联网营销师_国外直播平台tiktok_优化公司治理结构

2024/11/17 4:42:42 来源:https://blog.csdn.net/qq_72175463/article/details/143127810  浏览:    关键词:长沙企业网络营销手段_广州互联网营销师_国外直播平台tiktok_优化公司治理结构
长沙企业网络营销手段_广州互联网营销师_国外直播平台tiktok_优化公司治理结构

问题分析:

  1. 取模操作的位置不正确

    • 你在计算 result - max_ 之前没有正确处理大数取模,这可能导致数值溢出。
  2. 最大差值减少量的计算

    • 算法中的内部循环效率较低,可以优化。

优化后的代码:

我们可以参考官方题解,优化算法并确保取模操作的正确性。

class Solution {
public:int minAbsoluteSumDiff(vector<int>& nums1, vector<int>& nums2) {int length_ = nums1.size();long result = 0;long max_ = 0;// 先计算初始的绝对差值和for (int i = 0; i < length_; i++) {result += abs(nums1[i] - nums2[i]);}// 找到可以替换的最大差值减少量vector<int> sorted_nums1 = nums1;sort(sorted_nums1.begin(), sorted_nums1.end());for (int i = 0; i < length_; i++) {int original_diff = abs(nums1[i] - nums2[i]);auto it = lower_bound(sorted_nums1.begin(), sorted_nums1.end(), nums2[i]);int new_diff = original_diff;if (it != sorted_nums1.end()) {new_diff = min(new_diff, abs(*it - nums2[i]));}if (it != sorted_nums1.begin()) {new_diff = min(new_diff, abs(*prev(it) - nums2[i]));}max_ = max(max_, original_diff - new_diff);}return (int)((result - max_) % 1000000007);}
};

详细解释优化后的代码:

  1. 计算初始绝对差值和

    for (int i = 0; i < length_; i++) {result += abs(nums1[i] - nums2[i]);
    }
    
    • 首先计算 nums1nums2 每个对应元素的绝对差值的和。
  2. nums1 进行排序

    vector<int> sorted_nums1 = nums1;
    sort(sorted_nums1.begin(), sorted_nums1.end());
    
    • 为了更高效地找到可以替换的元素,我们对 nums1 进行排序。
  3. 遍历每个元素并尝试找到最佳替换

    for (int i = 0; i < length_; i++) {int original_diff = abs(nums1[i] - nums2[i]);auto it = lower_bound(sorted_nums1.begin(), sorted_nums1.end(), nums2[i]);int new_diff = original_diff;if (it != sorted_nums1.end()) {new_diff = min(new_diff, abs(*it - nums2[i]));}if (it != sorted_nums1.begin()) {new_diff = min(new_diff, abs(*prev(it) - nums2[i]));}max_ = max(max_, original_diff - new_diff);
    }
    
    • 对于每个 nums2[i],使用二分查找在排序后的 nums1 中找到最接近的元素,并计算替换后的新差值。
    • 更新最大差值减少量 max_
  4. 计算最终结果并取模

    return (int)((result - max_) %
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com