列表

详情


剑指 Offer II 075. 数组相对排序

给定两个数组,arr1 和 arr2

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]

 

提示:

 

注意:本题与主站 1122 题相同:https://leetcode.cn/problems/relative-sort-array/ 

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 2.2 MB, 提交时间: 2022-05-25 11:50:46

func relativeSortArray(arr1 []int, arr2 []int) []int {
    mp := make(map[int]int)
    for i, a := range arr2 {
        mp[a] = i
    }

    sort.Slice(arr1, func(i, j int) bool {
        c1, h1 := mp[arr1[i]]
        c2, h2 := mp[arr1[j]]
        if h1 && h2 {
            return c1 < c2
        } 
        
        if  h1 || h2 {
            return h1
        }

        return arr1[i] < arr1[j]
    })

    return arr1
}

上一题