博客
关于我
LeetCode 1122 数组的相对排序-简单-unordered_map容器的应用
阅读量:490 次
发布时间: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/

你可能感兴趣的文章
Python:deepcopy(list) vs new_list = old_list[:]
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
查看>>
Python:TypeError:无法连接“str“和“int“对象
查看>>
Python:XPath 在 ElementTree 中不可用
查看>>
Python:从 FTP 服务器下载文件
查看>>
python:从列表中创建元组列表
查看>>
Python:从嵌套列表中删除重复项
查看>>
Python:从间隔映射到值
查看>>
Python:使用 shell=False 的子进程调用不起作用
查看>>
Python:修改 PATH 环境变量的平台无关方式
查看>>
Python:假与 0
查看>>
Python:函数使用
查看>>
Python:函数进阶
查看>>
Python:在整数的二进制表示中查找最长的二进制间隙
查看>>
Python:如何从二进制转换为 base 64 并返回?
查看>>
Python:如何以非阻塞方式读取子进程的标准输出
查看>>
Python:如何使用 plotly 制作阴影区域或交替背景颜色?
查看>>
Python:如何根据日期时间获取值的计数
查看>>