leetcode 1122. 数组的相对排序

77 阅读1分钟

c++

class Solution {
public:
    vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
        int cnt[1005] = {0};
        for (auto x : arr1) cnt[x]++;
        int k = 0;
        for (auto x : arr2) while (cnt[x]--) arr1[k++] = x;
        for (int i = 0; i <= 1000; i++) {
            if (cnt[i] <= 0) continue;
            while (cnt[i]--) arr1[k++] = i;
        } 
        return arr1;
    }
};

js

var relativeSortArray = function(arr1, arr2) {
    var cnt = new Array(1005).fill(0);
    for (var x of arr1) cnt[x]++;
    var k = 0;
    for (var x of arr2) while (cnt[x]--) arr1[k++] = x;
    for (var i = 0; i < 1005; i++) {
        if (cnt[i] <= 0) continue;
        while (cnt[i]--) arr1[k++] = i;
    }
    return arr1;
};