力扣1122. 数组的相对排序(哈希表)

Problem: 1122. 数组的相对排序

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

1.利用arr2创建一个无序映射(map集合),以其中的元素作为默认设置为0;
2.扫描arr1数组统计arr2元素在其中的个数(将个数存入上述的map集合中);
3.按arr2中的元素的顺序将map集合中的值存入到一个数组中;
4.将arr1剩下的元素按升序存入到上述数组中;

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为arr1的长度

空间复杂度:

O ( n ) O(n) O(n)

Code

class Solution {
   
public:
    /**
     * Hsah
     *
     * @param arr1 Given array1
     * @param arr2 Given array2
     * @return vector<int>
     */
    vector<int> relativeSortArray(vector<int> &arr1, vector<int> &arr2) {
   
        // The number of times each number in arr2 appears in arr1
        unordered_map<int, int> counts;
        // Construct the hash table with arr2 first
        for (int i = 0; i < arr2.size(); ++i) {
   
            counts[arr2[i]] = 0;
        }
        // Scan arr1 Collects the number of occurrences of each digit in arr2 in arr1
        for (int i = 0; i < arr1.size(); ++i) {
   
            if (counts.find(arr1[i]) != counts.end()) {
   
                int oldCount = counts[arr1[i]];
                counts[arr1[i]] = oldCount + 1;
            }
        }
        vector<int> result(arr1.size());
        int k = 0;
        // Output count data in arr2 order
        for (int i = 0; i < arr2.size(); ++i) {
   
            int count = counts[arr2[i]];
            for (int j = 0; j < count; ++j) {
   
                result[k + j] = arr2[i];
            }
            k += count;
        }
        // Outputs data in arr1 that does not appear in arr2 in order to result
        sort(arr1.begin(), arr1.end());
        for (int i = 0; i < arr1.size(); ++i) {
   
            if (counts.find(arr1[i]) == counts.end()) {
   
                result[k++] = arr1[i];
            }
        }
        return result;
    }
};

相关推荐

  1. 【LeetCode每日一题】1122. 相对排序

    2024-02-14 06:42:01       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-14 06:42:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-14 06:42:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-14 06:42:01       82 阅读
  4. Python语言-面向对象

    2024-02-14 06:42:01       91 阅读

热门阅读

  1. iOS swift XHToast.showCenterWithText不显示

    2024-02-14 06:42:01       58 阅读
  2. 1.Swift简介和发展

    2024-02-14 06:42:01       43 阅读
  3. 从Unity到Three.js(计时器、Transform)

    2024-02-14 06:42:01       47 阅读
  4. Atcoder ABC338 A - Capitalized?

    2024-02-14 06:42:01       53 阅读
  5. c++中的&

    2024-02-14 06:42:01       47 阅读
  6. 文档类图像的智能识别,文档分类自定义分类器

    2024-02-14 06:42:01       45 阅读
  7. libevent

    2024-02-14 06:42:01       41 阅读
  8. ubuntu22.04下使用conda安装pytorch(cpu及gpu版本)

    2024-02-14 06:42:01       48 阅读
  9. 适应力和应变力是智能的重要组成部分

    2024-02-14 06:42:01       48 阅读
  10. git将给远程地址配置别名

    2024-02-14 06:42:01       50 阅读