• 1122. 数组的相对排序 自定义排序


    给你两个数组,arr1 和 arr2,

    arr2 中的元素各不相同
    arr2 中的每个元素都出现在 arr1 中
    对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。

    示例:

    输入: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]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/relative-sort-array
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution {
    public:
        vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
            unordered_map <int, int> rank;
            for (int i = 0 ; i < arr2.size(); i++) {
                rank[arr2[i]] = i;
            }
    
            sort(arr1.begin(), arr1.end(), [&](int x, int y) {
                if (rank.count(x)) {
                    return rank.count(y) ? rank[x] < rank[y] : true;
                }
                else {
                    return rank.count(y) ? false : x < y;
                }
            });
    
            return arr1;
        }
    };
    
  • 相关阅读:
    Girls and Boys
    Kindergarten
    codevs 2822 爱在心中
    Popular Cows
    QWQ
    2488 绿豆蛙的归宿(拓扑+dp)
    P1119 灾后重建
    Mr. Frog’s Game
    Basic Data Structure
    A strange lift
  • 原文地址:https://www.cnblogs.com/xgbt/p/13972278.html
Copyright © 2020-2023  润新知