郑州网站建设开拓者青岛的互联网企业

张小明 2026/1/11 4:58:27
郑州网站建设开拓者,青岛的互联网企业,如何做电子商城网站,网站后台为什么传不上图片今天只有两道题呢#xff0c;也很简单#xff0c;难度★吧#xff0c;能做出来。今天是有点懈怠了#xff0c;但是还是撑着做了两道题#xff0c;不是吗#xff0c;不要太苛责自己#xff0c;状态好的时候多写点#xff0c;状态差的时候少写点#xff0c;只要写了就不…今天只有两道题呢也很简单难度★吧能做出来。今天是有点懈怠了但是还是撑着做了两道题不是吗不要太苛责自己状态好的时候多写点状态差的时候少写点只要写了就不算原地踏步。一.两个数组的交集Ⅱ ★☆☆☆☆题目350. 两个数组的交集 II 给你两个整数数组nums1和nums2请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数应与元素在两个数组中都出现的次数一致如果出现次数不一致则考虑取较小值。可以不考虑输出结果的顺序。我的思路这道题跟昨天的349. 两个数组的交集的区别是结果元素的次数不再局限为1次而是要符合交集的次数所以我用了相同的排序双指针的方法利用这个办法这道题看上去反而比昨天更简单了。只需要先排序然后在两个指针指向的元素相等时赋值到结果数组res中不相等时指向较小数的指针先后移动直到其中一个指针移动到数组末尾即可。代码class Solution { public: vectorint intersect(vectorint nums1, vectorint nums2) { int len1nums1.size(); int len2nums2.size(); sort(nums1.begin(),nums1.end()); sort(nums2.begin(),nums2.end()); vectorint res; int p0; int q0; while(plen1 qlen2){ if(nums1[p]nums2[q]){ res.push_back(nums1[p]); p; q; }else if(nums1[p]nums2[q]){ p; }else{ q; } } return res; } };复杂度时间复杂度O(nlognmlogmnm)O(nlognmlogm)空间复杂度O(lognlogm)官方题解——哈希表利用哈希表的value记录对应的key的“次数”先循环数组1保存每个数字的出现次数然后遍历数组2的元素如果该元素在哈希表中则将其加入到结果数组中同时将对应的value减一表示已相等一次若再次相等一样的操作。然后遍历完数组2即可。代码class Solution { public: vectorint intersect(vectorint nums1, vectorint nums2) { int len1nums1.size(); int len2nums2.size(); vectorint res; unordered_mapint,int map; for(int i0;ilen1;i){ map[nums1[i]]; } for(int i0;ilen2;i){ if(map.count(nums2[i])){ res.push_back(nums2[i]); map[nums2[i]]--; if(map[nums2[i]]0){ map.erase(nums2[i]); } } } return res; } };复杂度二.第三大的数 ★☆☆☆☆题目414. 第三大的数 给你一个非空数组返回此数组中第三大的数。如果不存在则返回数组中最大的数。思路既然要找第三大的数字那将数组排序后就更加容易寻找。升序排列后从数组最后一个元素开始向前寻找用temp表示当前的新数值即和前一个数字不一样的数用sign表示当前temp记录的是第几大的值用res保存答案。遍历数组遇到新数字就赋值给temp并将sign加一当sign3时temp记录的就是第三大的数值赋值给res。因为不满足第三大的情况都是输出最大值所以给res初始化为最大值没有满足的情况就直接输出最大值。代码class Solution { public: int thirdMax(vectorint nums) { //排序 //用标记值记录数值慢慢向后移动找到第三大的数即可反之输出最后一个数 int lennums.size(); sort(nums.begin(),nums.end()); int tempnums[len-1]; int sign1; int resnums[len-1]; for(int ilen-1;i0;i--){ if(nums[i]temp){ tempnums[i]; sign; } if(sign3){ restemp; break; } } return res; } };复杂度时间复杂度O(n)。遍历数组最坏的情况为n次所以时间复杂度为O(n)。空间复杂度O(1)。因为没有数组、哈希表这类的变量只有普通变量所以空间复杂度是常数。官方题解思路1——有序集合创建有序集合set利用其自动排序的特性存储前三大的元素需要保证set长度一直3如果加入了某元素set3则要删去最小的元素。最后若set3返回set中最小的值反之返回最大的值。代码class Solution { public: int thirdMax(vectorint nums) { setint s; for(int num:nums){ s.insert(num); if(s.size()3){ s.erase(s.begin()); } } return s.size()3?*s.begin():*s.rbegin(); } };说明1.for (int num : nums)表示依次取出容器如vector、数组、set等中的每个元素赋值给变量num并执行循环体相当于for (int i 0; i nums.size(); i) { int num nums[i]; // 手动通过下标取元素 }2.有序集合s按升序排列第一个元素s.begin()是最小的最后一个元素s.rbegin()是最大的s.erase(x)表示删除s中的元素x复杂度时间复杂度O(n)。线性时间s的操作因大小受限为常数级遍历主导复杂度空间复杂度O(1)。常数空间s最多存储 3 个元素无额外空间开销思路2——一次遍历一次遍历顾名思义就是只需要将整个数组完整地遍历一次就实现功能主要思想是借助变量a、b、c分别代表最大值、第二大值和第三大值在遍历的过程中根据数组元素的大小改变三个变量的值。nums[ i ]大于最大值第二大变为第三大原来的最大值变为第二大当前元素变为最大值第二大nums[ i ]最大值第二大变为第三大当前元素变为第二大第三大nums[ i ]第二大当前元素变为第三大。最后返回时若第三大c还是LONG_MIN表示没有前三大返回最大值a反之返回c代码1class Solution { public: int thirdMax(vectorint nums) { //用a、b、c模拟前三大元素 long aLONG_MIN,bLONG_MIN,cLONG_MIN; for(long num:nums){ //大于最大数 if(numa){ cb; ba; anum; }//在第一大和第二大之间 else if(anum numb){ cb; bnum; } //在第二大和第三大之间 else if(bnum numc){ cnum; } } return cLONG_MIN?a:c; } };代码2第二种写法利用指针a、b、c初始化为空表示无穷小然后在判断范围时加上指针是否为空的判断class Solution { public: int thirdMax(vectorint nums) { int *a nullptr, *b nullptr, *c nullptr; for (int num : nums) { if (a nullptr || num *a) { c b; b a; a num; } else if (*a num (b nullptr || num *b)) { c b; b num; } else if (b ! nullptr *b num (c nullptr || num *c)) { c num; } } return c nullptr ? *a : *c; } };复杂度时间复杂度O(n)空间复杂度O(1)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站图片标题背景怎样做的做医疗护具网站

Linux 网络文件系统(NFS)使用指南 1. NFS 概述 网络文件系统(NFS)是使用远程过程调用(RPC)的最突出的网络服务之一。它允许用户以访问本地文件的相同方式访问远程主机上的文件。客户端通过内核支持和用户空间守护进程,结合服务器端的 NFS 服务器,实现了这种文件访问方…

张小明 2026/1/9 22:19:44 网站建设

免费建设网站和域名wordpress 网站域名

如何快速掌握Maye启动器:Windows用户的效率提升指南 【免费下载链接】Maya Maye 一个简洁小巧的快速启动工具 项目地址: https://gitcode.com/gh_mirrors/maya/Maya 在当今信息爆炸的时代,工作效率已经成为衡量个人能力的重要标准。Maye快速启动器…

张小明 2026/1/9 22:19:39 网站建设

镇江市网站建设设计百度移动端排名软件

12月8日,由北京地区副总院长张丰菊教授亲自操刀,46岁S先生在北京爱尔新力眼科进行了LBV激光老视矫正手术。2021年,S先生到院了解近视手术,检查完毕后,因担心后续的老视问题,暂时放弃了近视手术的想法。时隔…

张小明 2026/1/9 22:19:33 网站建设

中企动力z云邮企业邮箱登录网站seo推广营销

深入实战:UDS 28服务通信控制的完整实现路径你有没有遇到过这样的场景?在刷写一个ECU时,总线突然被大量周期性报文塞满,导致程序下载频繁超时。或者更糟——刚禁用完通信,诊断仪却再也收不到响应,仿佛ECU“…

张小明 2026/1/9 7:07:29 网站建设

网站开发的计划书石家庄网络推广平台

IDM试用期已到却不想付费购买?这款专业的IDM试用期重置工具让你无需修改程序即可继续使用这款强大的下载神器。通过简单的自动化操作,轻松解决试用期限制问题。 【免费下载链接】idm-trial-reset Use IDM forever without cracking 项目地址: https://…

张小明 2026/1/10 0:15:42 网站建设