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

中国企业500强榜单发布徐州百度seo排名

中国企业500强榜单发布,徐州百度seo排名,网站推广宣传,中国哪家网站做仿古做的好leetcode 2625 扁平化嵌套数组 请你编写一个函数,它接收一个 多维数组 arr 和它的深度 n ,并返回该数组的 扁平化 后的结果。 多维数组 是一种包含整数或其他 多维数组 的递归数据结构。 数组 扁平化 是对数组的一种操作,定义是将原数组部…

leetcode 2625 扁平化嵌套数组

请你编写一个函数,它接收一个 多维数组 arr 和它的深度 n ,并返回该数组的 扁平化 后的结果。

多维数组 是一种包含整数或其他 多维数组 的递归数据结构。

数组 扁平化 是对数组的一种操作,定义是将原数组部分或全部子数组删除,并替换为该子数组中的实际元素。只有当嵌套的数组深度大于 n 时,才应该执行扁平化操作。第一层数组中元素的深度被认为是 0。

请在没有使用内置方法 Array.flat 的前提下解决这个问题。

示例 1:

输入
arr = [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
n = 0
输出
[1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]解释
传递深度 n=0 的多维数组将始终得到原始数组。这是因为 子数组(0) 的最小可能的深度不小于 n=0 。因此,任何子数组都不应该被平面化。

示例 2:

输入
arr = [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
n = 1
输出
[1, 2, 3, 4, 5, 6, 7, 8, [9, 10, 11], 12, 13, 14, 15]解释
以 4 、7 和 13 开头的子数组都被扁平化了,这是因为它们的深度为 0 , 而 0 小于 1 。然而 [9,10,11] 其深度为 1 ,所以未被扁平化。

示例 3:

输入
arr = [[1, 2, 3], [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
n = 2
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]解释
所有子数组的最大深度都为 1 。因此,它们都被扁平化了。

两种方法,一种递归一种循环

递归↓(测试用例通过127/131 会超时)

var flat = function (arr, n) {if(n == 0)return arrresult = []for(let i = 0; i < arr.length; i ++){if(Array.isArray(arr[i])){result = result.concat(arr[i])}else{result.push(arr[i])}}return flat(result, n-1)
};

循环↓ 依旧超时,很无语。。

var flat = function (arr, n) {while(n > 0){result = []for(let i = 0; i < arr.length; i ++){if(Array.isArray(arr[i])){result = result.concat(arr[i])}else{result.push(arr[i])}}arr = resultn --}return arr
};

看题解吧,原来递归只递归子数组,而不是一整个重新递归。。学到了

var flat = function (arr, n) {let res = [];const flattening = (nums, l) => {for (const num of nums) {if (Array.isArray(num) && l > 0) {flattening(num, l - 1);} else {res.push(num);}}}flattening(arr, n);return res;
};

leetcode 2626 数组归约运算

请你编写一个函数,它的参数为一个整数数组 nums 、一个计算函数 fn 和初始值init 。返回一个数组 归约后 的值。

你可以定义一个数组 归约后 的值,然后应用以下操作: val = fn(init, nums[0]) , val = fn(val, nums[1]) , val = fn(val, nums[2]) ,... 直到数组中的每个元素都被处理完毕。返回 val 的最终值。

如果数组的长度为 0,它应该返回 init 的值。

请你在不使用内置数组方法的 Array.reduce 前提下解决这个问题。

示例 1:

输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr; }
init = 0
输出:10
解释:
初始值为 init=0 。
(0) + nums[0] = 1
(1) + nums[1] = 3
(3) + nums[2] = 6
(6) + nums[3] = 10
Val 最终值为 10。

示例 2:

输入: 
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr * curr; }
init = 100
输出:130
解释:
初始值为 init=100 。
(100) + nums[0]^2 = 101
(101) + nums[1]^2 = 105
(105) + nums[2]^2 = 114
(114) + nums[3]^2 = 130
Val 最终值为 130。

示例3:

输入: 
nums = []
fn = function sum(accum, curr) { return 0; }
init = 25
输出:25
解释:这是一个空数组,所以返回 init 。

 就是非常无脑

var reduce = function(nums, fn, init) {result = initfor(let i = 0; i < nums.length; i ++){result = fn(result, nums[i])}return result
};

leetcode 2627 函数防抖

请你编写一个函数,接收参数为另一个函数和一个以毫秒为单位的时间 t ,并返回该函数的 函数防抖 后的结果。

函数防抖 方法是一个函数,它的执行被延迟了 t 毫秒,如果在这个时间窗口内再次调用它,它的执行将被取消。你编写的防抖函数也应该接收传递的参数。

例如,假设 t = 50ms ,函数分别在 30ms 、 60ms 和 100ms 时调用。前两个函数调用将被取消,第三个函数调用将在 150ms 执行。如果改为 t = 35ms ,则第一个调用将被取消,第二个调用将在 95ms 执行,第三个调用将在 135ms 执行。

 没啥好说的,老生常谈的问题,注意timer千万不能定义到return的函数内部

var debounce = function(fn, t) {let timerreturn function(...args) {clearTimeout(timer)timer = setTimeout(() => {fn(...args)}, t)}
};

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

相关文章:

  • 商务网站建设ppt平台推广话术
  • 网站建设样式如何在网站上做网盘
  • 做室内设计的网站有哪些方面百度免费建个人网站
  • 成都网站设公司做网站第一部
  • 一般网站隐蔽点么么进宁夏建设管理局网站
  • 免费建网站赚钱松江区网站制作与推广
  • 网站内容排版网页设计的目的与要求
  • 深圳南山企业网站建设网站logo怎么做
  • 有谁可以做网站寄生虫信息互联网推广
  • 运城网站建设价格素材天下网站
  • 中国建设银行网站公积金查询余额用pc网站建设手机网站
  • l凉州区城乡建设部网站首页昆山做网站哪家好
  • 网站推广优化淄博公司电商购物网站模板下载
  • 张家港网站制作网络推广华池网站建设
  • 网站建设价格济南龙华专业做网站公司
  • 网站添加音乐定制制作网站价格表
  • 毕业设计心理评测网站开发辽宁建设安装集团有限公司网站
  • 网站建设确认表建设企业人力资源网站
  • 移动网站好处山亭 网站建设
  • 网站开发应用到的技术名词如何自助建网站
  • 网站内容不被收录上海企业网站制作报价
  • 如何免费搭建自己的网站wordpress如何生成app
  • 广州化妆品网站建设公司网站推广服务算中介吗
  • 郑州网站制作优化网站内容
  • 百度站长平台官网登录入口网络服务器在哪个国家
  • 网站如何做邮箱订阅网站建设总结报告书
  • 网站功能模块设计h5做怎么做微网站
  • 做网站比较好的公司有哪些网站开发的技术路线是什么
  • wordpress网站安装插件视频软件下载大全免费
  • 北京建网站 优帮云ui设计的网站有哪些