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

凌美上海建设工程网站德州王霞网站建设

凌美上海建设工程网站,德州王霞网站建设,公司网站怎么建站,wordpress win 伪静态❓349. 两个数组的交集 难度#xff1a;简单 给定两个数组 nums1 和 nums2 #xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1#xff1a; 输入#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出#xff1a;[…❓349. 两个数组的交集 难度简单 给定两个数组 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 10000 nums1[i], nums2[i] 1000 思路 法一排序双指针 如果两个数组是有序的则可以使用双指针的方法得到两个数组的交集。 首先对两个数组进行排序然后使用两个指针遍历两个数组。可以预见的是加入答案的数组的元素一定是递增的为了保证加入元素的唯一性我们在向结果数组ans 添加元素时要判断该元素是否已经存在如果ans添加第一个元素时不需要判断。 法二哈希表 输出结果中的每个元素一定是唯一的也就是说输出的结果的去重的根据哈希表的性质可以去重 首先将 num1 中的元素放到哈希表 s1 中然后遍历 num2 中元素如果 s1 中也存在则保存到另一个哈希表 ans 中;最后哈希表 ans 就是所求交集将结果集合转为数组。 代码(Java、C) 法一排序双指针 Java class Solution {public int[] intersection(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);int len1 nums1.length, len2 nums2.length;int[] ans new int[Math.min(len1, len2)];int index1 0, index2 0, index 0;while(index1 len1 index2 len2){if(nums1[index1] nums2[index2]){if(index 0){ans[index] nums1[index1];}else if(nums1[index1] ! ans[index - 1]){ans[index] nums1[index1];}index1;index2;}else if(nums1[index1] nums2[index2]){index1;}else{index2;}}return Arrays.copyOfRange(ans, 0, index);} }C class Solution { public:vectorint intersection(vectorint nums1, vectorint nums2) {sort(nums1.begin(), nums1.end());sort(nums2.begin(), nums2.end());vectorint ans;vectorint::iterator ite1 nums1.begin(), ite2 nums2.begin();while(ite1 ! nums1.end() ite2 ! nums2.end()){if(*ite1 *ite2){if(ans.size() 0){ans.push_back(*ite1);}else if(*ite1 ! ans.back()){ans.push_back(*ite1);}ite1;ite2;}else if(*ite1 *ite2){ite1;}else{ite2;}}return ans;} };法二哈希表 Java class Solution {public int[] intersection(int[] nums1, int[] nums2) {SetInteger s1 new HashSetInteger();SetInteger ans new HashSetInteger();for(int num : nums1){s1.add(num);}for(int num: nums2){if(s1.contains(num)){ans.add(num);}}//将结果集合转为数组, 另外申请一个数组存放setRes中的元素,最后返回数组int[] arr new int[ans.size()];int j 0;for(int i : ans){arr[j] i;}return arr;} }C class Solution { public:vectorint intersection(vectorint nums1, vectorint nums2) {unordered_setint s(nums1.begin(), nums1.end());unordered_setint ans;for(int num : nums2){if(s.find(num) ! s.end()){ans.insert(num);}}return vectorint(ans.begin(), ans.end());;} };运行结果 复杂度分析 时间复杂度法一 O ( m l o g m n l o g n ) O(m \ log mn \ log n) O(m logmn logn)其中 m 和 n 分别是两个数组的长度。对两个数组排序的时间复杂度分别是 O ( m log ⁡ m ) O(m \log m) O(mlogm) 和 O ( n log ⁡ n ) O(n \log n) O(nlogn)双指针寻找交集元素的时间复杂度是 O ( m n ) O(mn) O(mn)。法二为 O ( m n ) O(m n) O(mn)。空间复杂度法一 O ( l o g m l o g n ) O( log m log n) O(logmlogn)其中 m 和 n 分别是两个数组的长度 , 空间复杂度主要取决于排序使用的额外空间。法二为 O ( n ) O(n) O(n) n 为两数组长度的最小值。 题目来源力扣。 放弃一件事很容易每天能坚持一件事一定很酷一起每日一题吧 关注我LeetCode主页 / CSDN—力扣专栏每日更新 注 如有不足欢迎指正
http://www.hkea.cn/news/14373780/

相关文章:

  • 济南美赞网站建设公司黄岩网站建设
  • 成绩查询系统网站开发网站建设外包协议
  • 阿里云做网站教程中国设计网作品欣赏
  • 网站配色 橙色简单详细搭建网站教程
  • 物价工作信息网站建设德阳互联免费云主机
  • 凡科是免费做网站吗什么是网站设计种类
  • 电子商务网站建设规划说明书乡村网站建设
  • 哪里有学做视频的网站3湖南招投标信息网官网
  • 承德网站制作加盟大良网站建设收费
  • 公司做网站的费用入账免费宣传网站
  • 网站建设公司发展专做国外采购的网站
  • 企业网站优化三层含义浙江建设三类人员证书查询
  • 旅游网站建设和实现网页设计工具一般有哪几种
  • 网站上的幻灯片如何做网站制作完成后
  • 门户网站建设ppt方案分毫报价小程序
  • 营销型企业网站建设 广义的空间韩国小清新网站模板
  • 东营市公司网站建设价格湛江网站制作建设
  • 太原注册公司网站中海建路桥建设有限公司网站
  • 岳阳网站优化郑州新闻最新消息今天
  • 个人博客网站域名注册做民宿加盟哪些网站比较好
  • 个人网站建设案例教程做网站网站犯法吗
  • 天河区网站建设网站二级导航
  • 中牟网站建设网站建设带服务器
  • python做的知名网站工商营业执照年检
  • 太月星网站建设程序开发网页设计wordpress中文商城模板
  • 企业官方网站建设教程个人怎么创建网站
  • 做企业网站10万起步百度一下建设部网站
  • 自家宽带怎么建设网站手机下载软件
  • 织梦做的网站如何去掉index深圳软件定制公司
  • 网站开发 验收邯郸手机网站建设费用