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

物流wap网站模板在菲律宾做网络网站犯法吗

物流wap网站模板,在菲律宾做网络网站犯法吗,赣县区建设局网站,巩义网站建设公司文章目录 Tag题目来源题目解读解题思路方法一:枚举比较法方法二:集合的位运算表示法 写在最后 Tag 【贪心】【位运算】【数组】 题目来源 2605. 从两个数字数组里生成最小数字 题目解读 给定两个各自只包含数字 1 到 9 的两个数组,每个数组…

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:枚举比较法
    • 方法二:集合的位运算表示法
  • 写在最后

Tag

【贪心】【位运算】【数组】


题目来源

2605. 从两个数字数组里生成最小数字


题目解读

给定两个各自只包含数字 19 的两个数组,每个数组中的元素互不相同,请你返回最小的数字,这个数字的数位至少包含两个数组中的数字。


解题思路

贪心的思想,如果两个数组有交集,则答案为交集中的最小值;否则,需要找出各个数组中的最小值,用最小值组成最小答案。

我们先来讲述最小值的计算,方法有很多,可以先升序排序(降序排序)再返回首位置元素(末位置元素),还可以直接使用 API *min_element() 来计算数组中的最小值。

计算两个数组的交集有以下两种方法:

  • 枚举比较法。
  • 集合的位运算表示法。

方法一:枚举比较法

枚举所有可能的数字组合,如果该组合中的两个数字一样,则加入到交集 section 中,如果集合 section 非空,则返回集合中的最小值。

实现代码

class Solution {
public:int minNumber(vector<int>& nums1, vector<int>& nums2) {vector<int> section;for (int i = 0; i < nums1.size(); ++i) {for (int j = 0; j < nums2.size(); ++j) {if (nums1[i] == nums2[j]) {section.push_back(nums1[i]);}}}if (!section.empty()) {return *min_element(section.begin(), section.end());}int min1 = *min_element(nums1.begin(), nums1.end());int min2 = *min_element(nums2.begin(), nums2.end());return  min(min1 * 10 + min2, min2 * 10 + min1);}
};

复杂度分析

时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn) n n n 为最大的数组长度。

空间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)

方法二:集合的位运算表示法

两个数组可以看作是两个集合,集合可以用二进制来表示,比如集合 S = { 1 , 2 , 3 } S = \{1, 2, 3\} S={1,2,3} 用二进制 1110 来表示,二进制数从右往左数的第 num 位为 1 表示数字 num 在集合中。

于是数组的交集就可以使用集合的交集来表示,交集可以用二进制的与操作计算,然后与操作得到的二进制数从右到左找到第一个 1 的位置,即为两个数组交集中的最小值,这里我们可以使用 __builtin_ctz() 来查找从右至左第一个 1 出现的位置。

关于集合用运算来表示,如果还有不明白的地方可以参考 位运算基础与应用 这篇文章。

实现代码

class Solution {
public:int minNumber(vector<int>& nums1, vector<int>& nums2) {// 位运算int mask1 = 0, mask2 = 0;for (int x : nums1) mask1 |= 1 << x;for (int x : nums2) mask2 |= 1 << x;int mask = mask1 & mask2;if (mask) return __builtin_ctz(mask);int x = __builtin_ctz(mask1), y = __builtin_ctz(mask2);return min(x * 10 + y, 10 * y + x);}
};

复杂度分析

时间复杂度: O ( n + m ) O(n+m) O(n+m),其中 n n n 为数组 nums1 的长度, m m m 为数组 nums2 的长度。

空间复杂度: O ( 1 ) O(1) O(1),仅使用了几个额外的变量。


写在最后

以上就是本篇文章的内容了,感谢您的阅读。🍗🍗🍗

如果感到有所收获的话可以给博主点一个 👍 哦。

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出。💬💬💬

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

相关文章:

  • 大量网站开发视频 文档VIP资源wordpress数据库教程
  • 网站建设可研报告服务器搭建wordpress
  • 营销网站建设内容服务好的网站制作
  • 网站视频怎么做的好怎么给网站引流
  • 国内外html5网站建设状况优化seo
  • 张槎建网站公司企业名录app哪个好
  • 永清县建设局网站app软件定制收费
  • 网站关键词多少合适接工程的app软件
  • 实用的网站如何用discuz做网站
  • 郑州企业网站优化排名网站推广排名公司
  • 用网站做淘客怎么赚钱天府健康通二维码图片高清下载
  • 姑苏企业建设网站公司中国建筑官网采购平台
  • 番禺网站建设wwiwwordpress 百度广告插件
  • 拖拽建站模板昆山网站建设河北
  • 淄博网站建设网站推广优化电池网站建设 中企动力
  • 江都网站建设哪个网站可以做付邮免费送活动
  • 什么网站可以做PS 写论文兼职外贸网站建设是什么
  • 网站开发推荐一本书搭建网站内链系统
  • 宝安国内知名网站建设比较好的app软件开发的费用设计
  • 电商网站开发需要什么语言免费的自助建站
  • 轻淘客轻网站怎么做如何做网站安全加固
  • 重庆企业网站建设价格外贸平台有哪些是免费的
  • 网站策划专员招聘做网站公司怎么做
  • 网站建设好后有些什么资料公司做网站好吗
  • 怎样打开用sql做的网站做网站设计软件
  • 做相册的网站dw河东网站建设
  • 企业网站应该怎么做应用商店app
  • 单页网站下载资深的金融行业网站开发
  • 网站首页分类怎么做的重庆建设牌摩托车官网
  • 制作空间主页网站在线做GO分析的网站