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

桂林北站电话客服中心/外链屏蔽逐步解除

桂林北站电话客服中心,外链屏蔽逐步解除,高端电商设计公司,如何做计算机网站这是跟着代码随想录的顺序学习算法的第八天。 以下是学习题解时自己的一些理解与笔记,有错误欢迎指正与讨论。 454. 四数相加 II、383. 赎金信 参考相关链接: 454. 四数相加 II 383. 赎金信 代码随想录 笔记 454. 四数相加 II 本题的一大关键点在…

这是跟着代码随想录的顺序学习算法的第八天。

以下是学习题解时自己的一些理解与笔记,有错误欢迎指正与讨论。


454. 四数相加 II、383. 赎金信

参考相关链接:

454. 四数相加 II

383. 赎金信

代码随想录


笔记

454. 四数相加 II

本题的一大关键点在于,需要求的是有多少个元组能满足 nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 的要求,而不是要求每个元组具体中每数组的索引。

由于同一个数组中重复的元素可算做两个元素,即在最终结果中可出现在两个元组中,故需要计算相同出现的次数。此外,本题要求的是和为0,故可借用哈希表的查询重复元素特点,用一组已知元素来判断另外一组未知元素中有没有解。

主要思路是,设置变量 count 记录次数后,先历遍前两个数组,求出两个数组的和的出现情况和次数,存到 map 中,接着,历遍后两个数组,每次求出和 nums3[k] + nums4[l] 的时候,去 map寻找 0 - (nums3[k] + nums4[l]) 的出现次数,并累加到 count 上去。

具体实现中最关键的地方就在于 map 中存了前两个数组的和的出现情况和次数,出现情况用来判断是否有解,出现次数用来进一步判断有多少组解


其他:简单的 if...else 判断可考虑学着用短路运算来代替,会使代码更加精简!

(从大佬在代码随想录中提供 JS 版本的代码中真的感受到了代码精简的酷)

for...of语句在可迭代对象(包括 ArrayMapSetStringTypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

const array1 = ['a', 'b', 'c'];for (const element of array1) {console.log(element);
}// expected output: "a"
// expected output: "b"
// expected output: "c"
// 代码随想录JS版本
var fourSumCount = function(nums1, nums2, nums3, nums4) {const twoSumMap = new Map();let count = 0;for(const n1 of nums1) {for(const n2 of nums2) {const sum = n1 + n2;twoSumMap.set(sum, (twoSumMap.get(sum) || 0) + 1) // 精简!}}for(const n3 of nums3) {for(const n4 of nums4) {const sum = n3 + n4;count += (twoSumMap.get(0 - sum) || 0) // 精简!}}return count;
};

383. 赎金信

主要解题思路就是,先统计 magazine 中的各个字符出现的次数,然后拿到 ransomNote 中去 “消耗”,若不够用则说明无法构成故返回 false ,否则可以构成返回 true

一些同学可能想,用数组干啥,都用map完事了,其实在本题的情况下,使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希表,而且还要做哈希函数,是费时的!数据量大的话就能体现出来差别了。 所以数组更加简单直接有效!

我就是用 map 的那些同学。

元素个数确定时候可以用 数组 。(真看不出来是规定了26个小写字母…)

其他:str.charCodeAt() 是个方法,不是属性。

// 代码随想录JS版本
var canConstruct = function(ransomNote, magazine) {const strArr = new Array(26).fill(0), base = "a".charCodeAt();for(const s of magazine) {// 统计出现次数strArr[s.charCodeAt() - base]++;}for(const s of ransomNote) {// 若不够用则为falseconst index = s.charCodeAt() - base;if(!strArr[index]) return false;strArr[index]--;}return true;
};
http://www.lbrq.cn/news/954703.html

相关文章:

  • 北京建设网站/seo网站关键词优化费用
  • 网站建设 招聘需求/百度推广客服电话24小时
  • 重庆网站搭建方案/全国病毒感染最新消息
  • 35云主机做网站对视频大小限制/沈阳seo技术
  • 大丰有没有做网站/适合小学生的新闻事件
  • 哪些网站做科技专题/怎么开发一个网站
  • 邯郸做网站找哪家好/最好用的手机优化软件
  • 如何制作wordpress模板下载/百度关键词seo优化
  • 云服务器品牌前十大排名/seo优化查询
  • 美国哪个网站做diy电脑版/网站推广软件免费
  • 建站教程的特点/开鲁seo服务
  • 中国制造网官网首页/昆明seo建站
  • 北京网站建设价格/手机端竞价恶意点击
  • 高州网站建设/seo推广软件代理
  • 建设团购网站/微信附近人推广引流
  • 营销型网站建设策划书/域名服务器ip地址查询
  • iis搭建网站时 属于默认文档的是/seo专业优化方法
  • 网站特效 素材/百度查重入口免费版
  • 网站建设需要学编程么/2023b站免费推广入口
  • 自己搭建一个网站/杭州网站seo推广
  • 石家庄做网站建设的公司哪家好/网站链接推广工具
  • 用vs做网站后台/桂平seo快速优化软件
  • 想开个视频网站该怎么做/在seo优化中
  • 手机网站建设平台合同/武汉seo网站优化运营
  • 虚拟主机wordpress多站点/百度指数搜索榜度指数
  • 浏阳网站建设tvshown/百度推广新手入门
  • 公安网站管理系统破解/网站建设深圳公司
  • 佛山做网站开发/成人编程培训机构排名前十
  • 门户系统大全/搜索排名优化
  • 网站建设标准 方案书/做网站用什么软件
  • 移动端开发的package命名规范
  • C++控制台贪吃蛇开发:从0到1绘制游戏世界
  • uniapp props、$ref、$emit、$parent、$child、$on
  • 《Origin画百图》之多分类矩阵散点图
  • c++——友元函数
  • 市场数据+幸存者偏差提问,有趣的思考?