博客
关于我
LeetCode 1122 数组的相对排序-简单-unordered_map容器的应用
阅读量:489 次
发布时间:2019-03-06

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

    
Relative Sort Arrays

Relative Sort Arrays Problem

Given two arrays, arr1 and arr2, where each element in arr2 is unique and appears in arr1, we need to sort arr1 such that the relative order of elements matches arr2. Elements not present in arr2 should be placed at the end in ascending order.

Example:

Input: arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]

Output: [2,2,2,1,4,3,3,9,6,7,19]

Approach

To solve this problem, we can follow these steps:

  • Mapping Elements: First, create a mapping of each element in arr2 to its position. This helps in determining the required order of elements in arr1.
  • Sorting arr1: Sort the elements in arr1 based on their positions in arr2. Elements not present in arr2 are placed at the end in ascending order.

Implementation Steps

In code, we can implement this using a hash table (unordered_map) to store the positions of elements in arr2. Then, sort arr1 using a custom comparator that checks the positions from arr2. Finally, append any elements from arr1 that are not in arr2, sorted in ascending order.

Code Example

class Solution {public:    vector
relativeSortArray(vector
& arr1, vector
& arr2) { unordered_map
positionMap; // Populate the position map for (int i = 0; i < arr2.size(); ++i) { positionMap[arr2[i]] = i; } // Sort arr1 based on the position map sort(arr1.begin(), arr1.end(), [&positionMap](int a, int b) { return positionMap[a] < positionMap[b]; }); // Append elements from arr1 not present in arr2, sorted vector
extra; for (int num : arr1) { if (positionMap.find(num) == positionMap.end()) { extra.push_back(num); } } sort(extra.begin(), extra.end()); arr1.insert(arr1.end(), extra.begin(), extra.end()); return arr1; }

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

你可能感兴趣的文章
MySQL集群解决方案(5):PXC集群
查看>>
MySQL面试宝典
查看>>
WAP短信:融合传统短信和互联网的新型通信方式
查看>>
mysql面试题学校三表查询_mysql三表查询分组后取每组最大值,mysql面试题。
查看>>
Mysql面试题精选
查看>>
MySQL面试题集锦
查看>>
mysql面试题,存储引擎InnoDB和MyISAM
查看>>
mysql面试题:为什么MySQL单表不能超过2000W条数据?
查看>>
mysql面试题:创建索引时会不会锁表?
查看>>
mysql面试题:高度为3的B+树可以存放多少数据?
查看>>
mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
查看>>
mysql驱动、durid、mybatis之间的关系
查看>>
mysql驱动支持中文_mysql 驱动包-Go语言中文社区
查看>>
MySQL高可用之——keepalived+互为主从
查看>>
MySQL高可用切换_(5.9)mysql高可用系列——正常主从切换测试
查看>>
MySQL高可用解决方案
查看>>
MySQL高可用解决方案详解
查看>>
MYSQL高可用集群MHA架构
查看>>
MySQL高可用集群架构MHA企业级实战
查看>>
MySQL高级-MySQL存储引擎
查看>>