博客
关于我
LeetCode 1122. 数组的相对排序
阅读量:799 次
发布时间:2023-04-16

本文共 1192 字,大约阅读时间需要 3 分钟。

题目给出了两个数组arr1和arr2,要求对arr1进行排序,使其元素的相对顺序与arr2中的元素相对顺序一致。未在arr2中出现过的元素需要按照升序放在arr1的末尾。

解题思路

  • 排序arr1:首先对arr1进行排序。这一步可以确保所有元素按照升序排列,为后续处理提供有序的环境。
  • 提取arr2中的元素:遍历arr2中的每一个元素,逐个在排序后的arr1中查找,并将这些元素提取出来。提取时,可以将对应的元素标记为已处理,以避免重复使用。
  • 处理未提取的元素:在提取完arr2中的所有元素后,剩下的未被处理的元素(即未在arr2中出现的元素)需要按照升序排列,依次添加到结果的末尾。
  • 代码实现

    #include 
    #include
    using namespace std;vector
    relativeSortArray(vector
    & arr1, vector
    & arr2) { // 对arr1进行排序 sort(arr1.begin(), arr1.end()); vector
    res; int cnt = 0; // 遍历arr2中的每一个元素 for (int i = 0; i < arr2.size(); ++i) { // 在arr1中找到对应的元素 for (int j = 0; j < arr1.size(); ++j) { if (arr1[j] == arr2[i]) { res.push_back(arr1[j]); arr1[j] = -1; // 标记已处理 break; } } } // 处理未在arr2中出现的元素 for (int i = 0; i < arr1.size(); ++i) { if (arr1[i] != -1) { res.push_back(arr1[i]); } } return res;}

    示例

    输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19]arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]

    代码解释

  • 排序arr1:使用sort函数对arr1进行升序排序。
  • 提取arr2中的元素:通过遍历arr2中的每个元素,逐个在排序后的arr1中查找并提取,确保提取的元素与arr2中的顺序一致。
  • 处理剩余元素:在提取完arr2中的所有元素后,剩下的元素(未在arr2中出现的元素)按照升序排列,依次添加到结果中。
  • 该方法确保了arr1的元素相对顺序与arr2中的顺序一致,同时也处理了未在arr2中出现的元素。

    转载地址:http://kdgfk.baihongyu.com/

    你可能感兴趣的文章
    openlayers 入门教程(十五):与 canvas、echart,turf 等交互
    查看>>
    openlayers 入门教程(十四):第三方插件
    查看>>
    openlayers 入门教程(四):layers 篇
    查看>>
    OpenLayers 项目分析(三)-OpenLayers中定制JavaScript内置类
    查看>>
    Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
    查看>>
    Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
    查看>>
    Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    Openlayers实战:modifystart、modifyend互动示例
    查看>>
    Openlayers实战:判断共享单车是否在电子围栏内
    查看>>
    Openlayers实战:绘制图形,导出geojson文件
    查看>>
    Openlayers实战:绘制图形,导出KML文件
    查看>>
    Openlayers实战:绘制多边形,导出CSV文件
    查看>>
    Openlayers实战:输入WKT数据,输出GML、Polyline、GeoJSON格式数据
    查看>>
    Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
    查看>>
    Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
    查看>>