前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日两题 T36

每日两题 T36

作者头像
合一大师
发布2020-07-20 09:53:41
2170
发布2020-07-20 09:53:41
举报
文章被收录于专栏:JavaScript全栈JavaScript全栈

算法

LeetCode T面试题56 - I. 数组中数字出现的次数[1]

描述

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。

示例1 :

代码语言:javascript
复制
输入:nums = [4,1,4,6]
输出:[1,6] 或 [6,1]

示例2:

代码语言:javascript
复制
输入:nums = [1,2,10,4,1,4,3,3]
输出:[2,10] 或 [10,2]

限制:

2 <= nums <= 10000

分析

hash表解决这个问题很简单,见代码。

代码

代码语言:javascript
复制
var singleNumbers = function(nums) {
var obj = {}
nums.forEach(count => {
    let attr = count + ""
    obj[attr] ? delete obj[attr] :(obj[attr] = 1)
})
return Object.keys(obj)
};

前端

浏览器和Node 事件循环的区别

浏览器

关于微任务和宏任务在浏览器的执行顺序是这样的:

•执行一只task(宏任务)•执行完micro-task队列 (微任务)

如此循环往复下去

浏览器的task(宏任务)执行顺序在 html#event-loops[2] 里面有讲就不翻译了 常见的 task(宏任务) 比如:setTimeout、setInterval、script(整体代码)、 I/O 操作、UI 渲染等。常见的 micro-task 比如: new Promise().then(回调)、MutationObserver(html5新特性) 等。

Node

Node的事件循环是libuv实现的,引用一张官网的图:

大体的task(宏任务)执行顺序是这样的:

•timers定时器:本阶段执行已经安排的 setTimeout() 和 setInterval() 的回调函数。•pending callbacks待定回调:执行延迟到下一个循环迭代的 I/O 回调。•idle, prepare:仅系统内部使用。•poll 轮询:检索新的 I/O 事件;执行与 I/O 相关的回调(几乎所有情况下,除了关闭的回调函数,它们由计时器和 setImmediate() 排定的之外),其余情况 node 将在此处阻塞。•check 检测:setImmediate() 回调函数在这里执行。•close callbacks 关闭的回调函数:一些准备关闭的回调函数,如:socket.on('close', ...)。

微任务和宏任务在Node的执行顺序

Node 10以前:

•执行完一个阶段的所有任务•执行完nextTick队列里面的内容•然后执行完微任务队列的内容

Node 11以后:和浏览器的行为统一了,都是每执行一个宏任务就执行完微任务队列。

References

[1] 面试题56 - I. 数组中数字出现的次数: https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/ [2] html#event-loops: https://html.spec.whatwg.org/multipage/webappapis.html#event-loops

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript全栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法
    • LeetCode T面试题56 - I. 数组中数字出现的次数[1]
      • 描述
        • 分析
          • 代码
          • 前端
            • 浏览器和Node 事件循环的区别
              • 浏览器
                • Node
                  • References
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档