每日两题 T24
时间:2022-07-22
本文章向大家介绍每日两题 T24,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
算法
LeetCode T445. 两数相加 II[1]
描述
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例
输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 8 -> 0 -> 7
分析
此题为两数之和的变体,两数之和是链表从根节点向后遍历相加,而此题是从后往前相加进位。很容易想到的思路是:将链表先旋转,求和后在旋转回去。这里我们必须联想到,栈 对于数据处理的一个优势,栈元素始终是后进先出,因此我们可以将两个链表各节点数字入栈,待 l1
入栈 stack1
, l2
入栈 stack2
完毕后,出栈求解两数之和从而生成新的链表节点,并连接成链表。
代码
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function (l1, l2) {
let stack1 = [];
let stack2 = [];
while (l1) {
stack1.push(l1.val);
l1 = l1.next;
}
while (l2) {
stack2.push(l2.val);
l2 = l2.next;
}
let mark = 0;
let res = null;
while (stack1.length > 0 || stack2.length > 0 || mark !== 0) {
let val1 = stack1.length > 0 ? stack1.pop() : 0;
let val2 = stack2.length > 0 ? stack2.pop() : 0;
let val = val1 + val2 + mark;
mark = val / 10 | 0;
curNode = new ListNode(val % 10);
curNode.next = res;
res = curNode;
}
return res;
};
前端
Web Worker 是什么,如何使用
是什么
JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。
在主入口或组件文件
var worker = new Worker('work.js');
向 Web Worker发送计算请求
worker.postMessage('calculate');
worker.postMessage({method: 'echo', args: ['Work']});
此时我们需要监听 Web Worker发送回来的消息
worker.onmessage = function (event) {
console.log('Received' + event.data);
// doSomething...
}
完成以后,关闭
worker.terminate();
在work线程(work.js)
self.addEventListener('message', function (e) {
self.postMessage('You said: ' + e.data);
}, false);
// 或者
this.addEventListener('message', function (e) {
self.postMessage('You said: ' + e.data);
}, false);
// 或者
addEventListener('message', function (e) {
self.postMessage('You said: ' + e.data);
}, false);
self.close();
加载其他脚本
importScripts('script1.js');
关于错误的处理
worker.addEventListener('error', function (event) {
// ...
});
References
[1]
445. 两数相加 II: https://leetcode-cn.com/problems/add-two-numbers-ii/
- WCF技术剖析之十七:消息(Message)详解(下篇)
- UITextView自动滚动的解决方案
- MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)
- Easyui 让DataGrid适应浏览器宽度
- Easyui 让Window弹出居中与最大化后居中
- WCF技术剖析之十六:数据契约的等效性和版本控制
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②
- Enterprise Library Policy Injection Application Block 之二: PIAB设计和实现原理
- 育碧与研究所共同开发的AI,是什么样的?
- 大家都在关注AI,但这些事你可能并不知道!
- AI—未来医疗
- 微信小程序新功能上线 一键连Wi-Fi手机变门禁卡
- 使用xUnit为.net core程序进行单元测试(中)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法