news 2026/8/21 6:35:12

数组间距离计算(包含元素的最大距离)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数组间距离计算(包含元素的最大距离)

以下是 Python 代码的 C++ 实现,主要逻辑包括计算数组相对于目标数组的距离,并根据该距离排序:

#include<iostream>#include<vector>#include<set>#include<algorithm>// 计算一个数组 arr 相对于目标数组 obj 的距离intcalculateDistance(conststd::vector<int>&arr,conststd::vector<int>&obj){std::set<int>objSet(obj.begin(),obj.end());// 使用集合进行快速成员检测intmaxGap=0;std::vector<int>indices;for(intnum:objSet){for(size_t i=0;i<arr.size();++i){if(arr[i]==num){indices.push_back(i);}}if(indices.size()>=2){std::sort(indices.begin(),indices.end());intgap=indices.back()-indices.front();// 最后一次出现与第一次出现的索引差if(gap>maxGap){maxGap=gap;}}// 如果数字只出现一次或未出现,gap 为 0,不影响 maxGap}returnmaxGap;}// 将 vector 中的每个元素按照其与 obj 的距离从小到大排序std::vector<std::vector<int>>sortVectorByDistance(conststd::vector<std::vector<int>>&vec,conststd::vector<int>&obj){std::vector<std::vector<int>>sortedVec=vec;std::sort(sortedVec.begin(),sortedVec.end(),[&obj](conststd::vector<int>&a,conststd::vector<int>&b){returncalculateDistance(a,obj)<calculateDistance(b,obj);});returnsortedVec;}intmain(){// 示例数据std::vector<std::vector<int>>myVector={{1,3,5,3,1,2,5},// 数字3的间隔: 索引1到3 -> 2; 数字5的间隔: 索引2到6 -> 4{2,4,6,8},// 没有数字在 obj 中,距离为 0{5,1,5,1,5},// 数字5的间隔: 索引0到4 -> 4{1,1}// 没有数字在 obj 中,距离为 0};std::vector<int>myObj={3,5};// 目标数组,我们关注数字3和5std::cout<<"原始 vector: "<<std::endl;for(size_t i=0;i<myVector.size();++i){intdist=calculateDistance(myVector[i],myObj);std::cout<<" 元素 "<<i<<": ";for(intval:myVector[i]){std::cout<<val<<" ";}std::cout<<", 距离: "<<dist<<std::endl;}std::vector<std::vector<int>>result=sortVectorByDistance(myVector,myObj);std::cout<<"\n排序后的 vector: "<<std::endl;for(size_t i=0;i<result.size();++i){intdist=calculateDistance(result[i],myObj);std::cout<<" 元素 "<<i<<": ";for(intval:result[i]){std::cout<<val<<" ";}std::cout<<", 距离: "<<dist<<std::endl;}return0;}

说明:

  1. calculateDistance 函数:
    · 将目标数组转换为 std::set 以方便查询。
    · 对每个目标数字,在数组中查找所有出现的位置并记录索引。
    · 如果出现次数 ≥ 2,计算最大间隔(最后出现位置 - 第一次出现位置),并更新最大间隔。
  2. sortVectorByDistance 函数:
    · 使用 std::sort 和自定义比较函数(Lambda 表达式),根据每个数组与目标数组的距离进行排序。
  3. 主函数:
    · 定义示例数据 myVector 和 myObj。
    · 输出原始数组及其距离,然后输出排序后的结果。

运行示例输出:

原始 vector: 元素 0: 1 3 5 3 1 2 5 , 距离: 4 元素 1: 2 4 6 8 , 距离: 0 元素 2: 5 1 5 1 5 , 距离: 4 元素 3: 1 1 , 距离: 0 排序后的 vector: 元素 0: 2 4 6 8 , 距离: 0 元素 1: 1 1 , 距离: 0 元素 2: 1 3 5 3 1 2 5 , 距离: 4 元素 3: 5 1 5 1 5 , 距离: 4

这样就用 C++ 完整实现了原 Python 代码的功能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 3:50:41

C++两个数组连接类似python的list相加

C中实现Python列表拼接操作 &#x1f4cb; 完整代码示例 #include <iostream> #include <vector> #include <algorithm> #include <iterator>// 方法1&#xff1a;基础实现 std::vector<int> concatenate_vectors(const std::vector<int>&…

作者头像 李华
网站建设 2026/8/21 2:38:39

Figma数据处理的终极指南:从设计到代码的无缝转化

Figma数据处理的终极指南&#xff1a;从设计到代码的无缝转化 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-Context-MCP 你是否曾经在Figm…

作者头像 李华
网站建设 2026/8/21 22:15:03

终极macOS应用清理指南:Pearcleaner让Mac重获新生空间

终极macOS应用清理指南&#xff1a;Pearcleaner让Mac重获新生空间 【免费下载链接】Pearcleaner Open-source mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner Pearcleaner是一款免费开源的macOS应用清理工具&#xff0c;通过智能扫描技术彻底…

作者头像 李华
网站建设 2026/8/21 14:53:22

Wan2.2-T2V-5B生成内容符合GDPR隐私规范

Wan2.2-T2V-5B&#xff1a;轻量视频生成如何天然契合GDPR&#xff1f; 你有没有想过&#xff0c;未来的内容创作可能不再需要摄影师、剪辑师&#xff0c;甚至不需要真人出镜&#xff1f;&#x1f92f; 一条广告视频、一段教学动画、一个聊天机器人的表情反馈——只需要一句话&a…

作者头像 李华
网站建设 2026/8/21 4:38:04

开源像素字体Fusion Pixel Font:多尺寸像素艺术字体的完整指南

Fusion Pixel Font是一款专为复古风格设计而生的开源像素字体&#xff0c;支持8px、10px和12px三种像素高度&#xff0c;完美适配游戏开发、界面设计和创意艺术等多种应用场景。这款字体采用黑体无衬线风格&#xff0c;通过创新的多字体融合技术&#xff0c;为开发者提供高质量…

作者头像 李华