博客
关于我
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 基础第七篇
查看>>
Python编程:Tkinter图形界面设计(1)
查看>>
Python 基础语法:None
查看>>
Python 基础语法:基本数据类型(一)
查看>>
python编程读取写入excel_Python读取txt内容写入xls格式excel中的方法
查看>>
Python 基础语法:基本数据类型(字典)
查看>>
Python 基础语法:基本数据类型(字符串)
查看>>
Python 基础语法:基本数据类型(集合)
查看>>
Python编程的终极十大工具
查看>>
python 堆排序
查看>>
python编程方式之一-函数式编程
查看>>
python 复习计划
查看>>
Python 多处理 apply_async 永远不会在 Windows 7 上返回结果
查看>>
Python 多处理 Numpy 随机
查看>>
Python 多处理 >= 125 列表永远不会完成
查看>>
Python 多处理:在第一个子错误时中止映射
查看>>
Python 多处理不断产生 pythonw.exe 进程而不做任何实际工作
查看>>
Python 多处理从不加入
查看>>
Python 多处理如何优雅地退出?
查看>>
Python 多处理将子进程的标准输出重定向到 Tkinter 文本
查看>>