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

如何搭建wordpress泉州网络seo

如何搭建wordpress,泉州网络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/wzjs/801928.html

相关文章:

  • 静态网站开发工具有哪些wordpress修改文章阅读量
  • 简单网站设计搜索引擎优化的简写是
  • 网站离线浏览器 怎么做湖南送变电建设公司 网站
  • 医院网站建设 价格低淮南网云小镇房价
  • 网站设计与管理方向网站建设面试表
  • 承德北京网站建设重庆重庆网站建设
  • 如何做自己的淘客网站有创意的婚纱网站模板下载
  • 网站制作容易吗大良外贸网站设计
  • 玉田网站设计公司wap建站工具
  • 我国外贸网站的建设重庆网站策划
  • 网站做专业团队在线网站生成器
  • 大丰做网站找哪家好做淘宝联盟网站要多少钱
  • 做网站的技术岗位有哪些网络热词缩写
  • 电商网站建设制作济南做网站的公司有哪些
  • 试玩网站建设电子商务网站建设模板下载
  • 成都网站建设四川冠辰网站建设网站排名优化原理
  • 网站建设单位wordpress仿微信
  • 自己做的网站显示iis7零基础月做网站多久
  • 苏州网站制作好的公司建设工程抗震应当坚持的原则有
  • 如何拍做美食的视频网站石景山网站建设有哪些公司
  • 移动网站建设初学视频教程中国移动网站官网
  • 网站建设的基本流程规范wordpress博客软件
  • 专业做美食视频的网站重庆智能网站建设公司
  • 如何做直播网站成都网站建设怎么样
  • 企业网站快速备案服务西青做网站公司
  • 网站建设框架怎么写英文网站google推广
  • 贵阳建设工程信息网站网站域名不要了怎么做
  • 网站制作公司咨询工作内容泰州专业网站建设公司
  • 江西建设单位网站wordpress安装幻灯片
  • 莱芜金点子信息港二手市场网站访问速度优化