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

SaaS网站可以做seo嘛wordpress代码编辑插件

SaaS网站可以做seo嘛,wordpress代码编辑插件,免费申请域名的步骤,如何用抖音做推广目录 (一)数组交集的C实现 写法一(哈希暴力搜索) 写法二(哈希集合搜索) (二)复杂度分析 时间复杂度 空间复杂度 (三)总结 【题目链接】349.两个数组的…

目录

(一)数组交集的C++实现

写法一(哈希暴力搜索)

写法二(哈希集合搜索)

(二)复杂度分析

时间复杂度

空间复杂度

(三)总结


【题目链接】349.两个数组的交集 - 力扣(LeetCode)

给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

  • 1 <= nums1.length, nums2.length <= 1000

  • 0 <= nums1[i], nums2[i] <= 1000

(一)数组交集的C++实现

哈希表:对元素的值进行哈希映射(哈希函数),映射到对应下标位置。也就是已知一个值,经过哈希函数可以直接计算在哈希表中的存储位置。

        哈希表的特点:元素值不重复,下标可以直接访问元素。

        哈希表的作用:使用哈希表可以快速(直接根据值和哈希函数计算下标并访问)判断元素是否在表里,时间复杂度为O(1)

写法一(哈希暴力搜索)

解题思路:

        双重遍历实现比较,并将交集结果存入哈希表中。返回时,需要将哈希表转化为整型数组。

(借助哈希表就不需要再考虑重复插入的问题

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {set<int> hashlist;    //哈希表的定义for(auto i : nums1){for(auto j : nums2){if(i == j)hashlist.insert(i);    //哈希表的插入操作}}return vector<int> (hashlist.begin(), hashlist.end());    //返回整个哈希表构成的数组}
};

写法二(哈希集合搜索)

解题思路:

        借助数学中寻找集合交集的思想,可以先将一个数组nums1变成具有集合特点的数组存储(也就是存储在一个哈希表中)。接着,可以遍历另一个数组nums2,如果元素在哈希表中,则将该值添加到交集数组中并在哈希表中删除;如果不在,则不需要进行任何操作。

        这种办法时间复杂度更低,不需要遍历完两个数组的所有元素。

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {set<int> hashlist;    //定义整形哈希表vector<int> result;    //定义整形数组(存储交集结果)for(auto i : nums1)hashlist.insert(i);for(auto j : nums2)if(hashlist.find(j) != hashlist.end()){    //不为hashlist.end()说明哈希表hashlist中有j这个值result.push_back(j);    //写进数组hashlist.erase(j);    //删除哈希表中的j这个值}return result;}
};

(二)复杂度分析

时间复杂度

(1)写法一:两层嵌套循环,假设nums1的长度为mnums2的长度为n,那么比较的次数为m * nset的插入操作平均时间复杂度是O(logk),其中kset中元素的数量。在最坏情况下,插入操作的总时间复杂度为O(mnlog(mn)) 。因此,总的时间复杂度为O(mnlog(mn))

(2)写法二:第一个循环插入操作平均时间复杂度是O(logm),插入m个元素的总时间复杂度为O(mlogm)。第二个循环遍历nums2,对于nums2中的每个元素,执行查找操作和可能的删除操作,查找和删除操作的平均时间复杂度都是O(logm),因此第二个循环的总时间复杂度为O(nlogm)。所以,总的时间复杂度为O(mlogm+nlogm)

空间复杂度

(1)写法一:set用来存储交集元素,在最坏情况下,交集元素的数量可能达到min(m, n),因此set所占用的空间为O(min(m,n));返回的vector也需要O(min(m,n))。所以,总的空间复杂度为O(min(m,n))

(2)写法二:set用来存储nums1中的元素,在最坏情况下,需要O(m)的空间。result数组用来存储交集元素,在最坏情况下,交集元素的数量可能达到min(m, n),因此result数组需要O(min(m,n))的空间。所以,总的空间复杂度为O(m)

(三)总结

(1)哈希表可以快速判断元素是否在表里,相比于遍历搜索时间复杂度会更低。

(2)解题时多找一下数学规律。

学习中,诚挚希望有心者指正和交流,经验或者方法都可。

http://www.dtcms.com/a/534703.html

相关文章:

  • 自己做网站用软件嵌入式开发工程师是干嘛的
  • 路桥区商用营销型网站建设个人 网站 备案
  • 免费h5网站制作平台二级域名网站好不好
  • 推荐上海网站建设做视频播放网站 赚钱
  • 优惠券的网站怎么做的在哪里购买域名
  • 网站设计案例公司农村办厂暴利项目
  • 0基础网站建设教程视频网站建设刷赞和vip
  • 模板设计建站设计公司画册模板
  • 深圳集团网站建设案例关于seo的行业岗位有哪些
  • 懒人手机网站公司做网站怎么构思
  • 奥迪网站建设策划书猪八戒logo设计网站
  • wordpress开通多站点好处建站服务器
  • 黄江网站建设微网站如何做推广方案设计
  • 温州做网站找哪家好东莞网站建设都用哪个好
  • 江门网站制作软件微信号 网站模板
  • 宁德网站开发内蒙古呼和浩特市邮编
  • h5网站架设网站帮助文档怎么写
  • 电子商务网站的建设费用案例网站自然排名往后掉
  • 全国信用网站一体化建设wordpress装ssl
  • 东莞网站建设关键词电商设计网站模板
  • 网站开发部网站建设 地址 昌乐
  • 网站水军怎么做免费个人简历表
  • 可以拔下来做的网站吗推广方式和渠道
  • 个人网站 模版 后台管理系统清润邯郸网站
  • 满山红网站建设公司校园网站建设初探
  • 高权重网站出售企业 网站建设
  • 网站建设的需要是什么内蒙古建设集团招聘信息网站
  • 在哪请人做网站lnmp wordpress 502
  • 银川网站开发培训网站动态图怎么做
  • 怎样建网站卖东西淮安市建设局网站