当前位置: 首页 > news >正文

网站出现乱码温州网站建设及推广

网站出现乱码,温州网站建设及推广,对中国建设银行网站的优点,wordpress后台响应慢Every day a Leetcode 题目来源:1122. 数组的相对排序 解法1:哈希 用集合 set 存储 arr2 中的元素。 遍历数组 arr1 ,设当前元素为 num: 如果 num 在 set 中出现,用哈希表 hash 记录 num 和它出现的次数。否则&a…

Every day a Leetcode

题目来源:1122. 数组的相对排序

解法1:哈希

用集合 set 存储 arr2 中的元素。

遍历数组 arr1 ,设当前元素为 num:

  • 如果 num 在 set 中出现,用哈希表 hash 记录 num 和它出现的次数。
  • 否则,用将 num 插入数组 remain。

遍历数组 arr2,设当前元素为 num。向 ans 中插入 hash[num] 个 num。

将 remain 增序排序,将 remain 插入 ans 的后面。

代码:

/** @lc app=leetcode.cn id=1122 lang=cpp** [1122] 数组的相对排序*/// @lc code=start
class Solution
{
public:vector<int> relativeSortArray(vector<int> &arr1, vector<int> &arr2){unordered_map<int, int> hash;set<int> set(arr2.begin(), arr2.end());vector<int> remain;for (const int &num : arr1){if (set.count(num))hash[num]++;elseremain.push_back(num);}vector<int> ans;for (const int &num : arr2){if (hash.count(num))for (int i = 0; i < hash[num]; i++)ans.push_back(num);}// 未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾sort(remain.begin(), remain.end());for (int i = 0; i < remain.size(); i++)ans.push_back(remain[i]);return ans;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(mlogm+n),其中 m 和 n 分别是数组 arr1 和 arr2 的长度。构建哈希表的时间复杂度为 O(n),排序的时间复杂度为 O(mlogm)。

空间复杂度:O(logm+n),其中 m 和 n 分别是数组 arr1 和 arr2 的长度。哈希表的空间复杂度为 O(n),排序使用的栈的空间复杂度为 O(mlogm)。

解法2:计数排序

注意到本题中元素的范围为 [0, 1000],这个范围不是很大,我们也可以考虑不基于比较的排序,例如「计数排序」。

优化:实际上,我们不需要使用长度为 1001 的数组,而是可以找出数组 arr1 中的最大值 upper,使用长度为 upper+1 的数组即可。

代码:

/** @lc app=leetcode.cn id=1122 lang=cpp** [1122] 数组的相对排序*/// @lc code=start
// class Solution
// {
// public:
//     vector<int> relativeSortArray(vector<int> &arr1, vector<int> &arr2)
//     {
//         unordered_map<int, int> hash;
//         set<int> set(arr2.begin(), arr2.end());
//         vector<int> remain;
//         for (const int &num : arr1)
//         {
//             if (set.count(num))
//                 hash[num]++;
//             else
//                 remain.push_back(num);
//         }
//         vector<int> ans;
//         for (const int &num : arr2)
//         {
//             if (hash.count(num))
//                 for (int i = 0; i < hash[num]; i++)
//                     ans.push_back(num);
//         }
//         // 未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾
//         sort(remain.begin(), remain.end());
//         for (int i = 0; i < remain.size(); i++)
//             ans.push_back(remain[i]);
//         return ans;
//     }
// };class Solution
{
public:vector<int> relativeSortArray(vector<int> &arr1, vector<int> &arr2){int upper = *max_element(arr1.begin(), arr1.end());vector<int> freq(upper + 1, 0);for (const int &num : arr1)freq[num]++;vector<int> ans;for (const int &num : arr2){for (int i = 0; i < freq[num]; i++)ans.push_back(num);freq[num] = 0;}for (int num = 0; num <= upper; num++)for (int i = 0; i < freq[num]; i++)ans.push_back(num);return ans;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(m+n+upper),其中 m 和 n 分别是数组 arr1 和 arr2 的长度。upper 是数组 arr1 的最大值。

空间复杂度:O(upper),其中 upper 是数组 arr1 的最大值。即为数组 freq 需要使用的空间。

http://www.yayakq.cn/news/89296/

相关文章:

  • 个人域名可以做网站吗在网站建设上的发言总结
  • 网站开发时间安排wordpress主题制作视频
  • 汕头seo课程培训排名轻松seo 网站
  • 给新公司做网站要多少钱网站建设芜湖
  • .net做网站cwordpress与微信教程
  • 网站内容优化方法有哪些网站开发结论
  • 企业网站开发服务高端企业网站建设公司怎么做实用性
  • 创建网站代码是什么情况wordpress 删除分类
  • 企业网站静态模板下载数字营销理论
  • 网站运营推广策划书wordpress出现的问题
  • 企业网站建设珠海淘宝做导航网站有哪些功能
  • 开发者选项长期开启会怎样网站内链seo
  • 中国联通网站备案系统西宁seo网站建设
  • 阿里巴巴网站建设与维护wordpress cxudy
  • 北京做网站的网络公司南京网站优化公司排名
  • 描述建设网站的一个具体步骤域名购买方法
  • 外贸网站营销方案好看网电影网站模板免费下载
  • 邯郸做网站多少钱企业手机网站建设报价
  • 兼职网站的建设目标怎么写计算机应用软件开发流程图
  • 亚马逊网站如何做商家排名红色主题网站模板
  • 二级建造师注册查询seo优化推广专员招聘
  • 专业建站公司建站系统该规划哪些内容wordpress小蜜蜂
  • 网页设计怎么分析网站啊阿里巴巴网站是怎么做的
  • php个人网站模板下载wordpress pdf 在线
  • 做高端企业网站建设公司邢台做移动网站价格
  • 山东建设局网站电工沪深互动平台
  • 国际网站如何做seo为什么做网站的会弄友情链接
  • 网站网站合作建设哪个网站做推广效果好
  • wordpress主题 建站广告网站建设网站排名优化
  • 哪些网站做写字楼出租wordpress中文书