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

网络服务网站建设网站建设低价网站到底便宜在哪

网络服务网站建设,网站建设低价网站到底便宜在哪,wordpress 功能介绍,一家专门做爆品印刷的网站今天,带来哈希表相关算法的讲解。文中不足错漏之处望请斧正! 理论基础点这里 1. 四数相加2 分析题意 求符合条件的四元组的出现次数,条件: nums1nums2nums3nums4 从四个数组中的每一个数组取一个数 num1, num2, num3, num4&am…

今天,带来哈希表相关算法的讲解。文中不足错漏之处望请斧正!

理论基础点这里


1. 四数相加2

分析题意

求符合条件的四元组的出现次数,条件:

  • nums1
  • nums2
  • nums3
  • nums4
    从四个数组中的每一个数组取一个数 num1, num2, num3, num4,满足 num1 + num2 + num3 + num4 == 0,则这是一个满足条件的四元组,可以记上它的出现次数。

题意转化

可以简单转化为 直接遍历取得4个数, 判断是否满足条件.但太慢,时间复杂度O(n^4)。

其实可以动动脑筋,将题意转化为 是否存在 两个两数之和 sum1 和 sum2 相加为0。

解决思路

四个数组该怎样去遍历,建立映射?

我们可以先遍历前两个数组,将数组中的元素两两求和得到sum1,把sum1和其出现次数建立映射得到哈希表sums1。接着遍历后两个数组,也两两求和得到sum2,在sums1中O(1)查找是否有一个和,和当前sum相加为0。

但为什么要这样遍历,我先遍历一个建立映射,再遍历三个不行吗?

这样我们在最终搜索比对的时候需要3层for来玩儿,那就是O(n^3)。而我们两两遍历只需要O(2 * n^2),这才是更好的。

编程实现

class Solution {
public:// 四数之和的判断 拆分为 两数之和的判断// 先遍历两个数组并求得所有两数之和sums1, 再遍历两个数组求剩下的两数之和, 查找是否有sum1 = -sum2int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map<int, int> sums1; // <sum1, cnt> -- 题目不要求返回下标, 只用返回次数int sum1 = 0;int sum2 = 0;// 先遍历两个数组并求得所有两数之和sums1for (int &num1 : nums1) {for (int &num2 : nums2) {sum1 = num1 + num2;++sums1[sum1];}}// 再遍历两个数组求剩下的两数之和, 查找是否有sum1 = -sum2int cnt = 0;for (int &num3 : nums3) {for (int &num4 : nums4) {sum2 = num3 + num4;auto iter = sums1.find(-sum2);if (iter != sums1.end()) cnt += iter->second;}}return cnt;}
};

时间复杂度:O(n^2)

2. 赎金信

分析题意

“给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。”

题意转化

判断ransomNote的组成字符是否全部都在magazine中有足够的字符与之对应。

解决思路

查找,上哈希。遍历magazine,用哈希表描述magazine中的字符出现过多少次。

编程实现

class Solution {
public:bool canConstruct(string ransomNote, string magazine) {int appeared[26] = {0};// 用哈希表(数组)描述magazine中的哪些字符出现过.for (char &ch : magazine) ++appeared[ch - 'a'];// 在magazine中查找ransomNote的所有字符, 所有都能找到才是赎金信.for (char &ch : ransomNote) {--appeared[ch - 'a'];if (appeared[ch - 'a'] < 0) return false; // magazine中没有足够字符构成ransomNote}return true;}
};

时间复杂度:O(n)

空间复杂度:O(1)


今天的分享就到这里了,感谢您能看到这里。

这里是培根的blog,期待与你共同进步!

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

相关文章:

  • 医院网站如何备案邯郸做外卖网站的公司
  • 网站建设的专业术语2021外贸网站有哪些
  • 遵义网上制作网站特产网站模板
  • 建设网站番禺中国建设企业协会网站首页
  • 青岛网站建设公司招聘编制综合网站平台的公司排名
  • 做彩平的网站google开户
  • 做网站都需要会什么软件搜索网站排名
  • 一个简单的网站怎么做的胶州做网站的
  • 牙科医院网站源码怎么推广自己的公司网站
  • 那些网站可以上传自己做的视频外贸网站模板源码
  • 企业商城网站建设价格青岛seo网站建设
  • 做网站需要备案么洛阳网站建设
  • 如何建一个网站多少钱常州被约谈企业主公司发讣告
  • 招生网站建设板块wordpress安装无法连接数据库
  • qq刷网站空间高端网站设计公司如何设计网站
  • 长沙网站建设团队成都又出现新增病例了
  • 徐州网站制作seo咨询价格找推推蛙
  • 直接IP做网站手机网站推广法
  • 专业做网站的公司哪家好教育网站建设公司
  • 国外网站推广网站建设组织架构
  • 长沙手机网站建设苏州万户网络
  • 类似百科式的网站建设凡科网站能在百度做推广吗
  • 安庆信德建设咨询有限公司网站网站模板信息不存在
  • 西安营销型网站建设公司网站flash引导页
  • 中文儿童网站模板劳动保障局瓯海劳务市场和做网站
  • 怎样黑网站合肥制作网站哪家好
  • 网站策划书的基本内容印刷网站开发策划书
  • 寿光专业做网站的公司有哪些成品软件网站推荐
  • 大型网站怎么加载图片的网站建设必学课程
  • 上海青浦区网站建设公司微信里我的微站是怎么弄的