source code
1 | // Runtime: 108 ms, faster than 13.49% of JavaScript online submissions for Binary Tree Maximum Path Sum. |
test cases
1 | test("test1", () => { |
优化
1 | //helper可以进一步优化 |
前端小天才智多星班进修中
1 | // Runtime: 108 ms, faster than 13.49% of JavaScript online submissions for Binary Tree Maximum Path Sum. |
1 | test("test1", () => { |
1 | //helper可以进一步优化 |
1 | // Runtime: 128 ms, faster than 13.03% of JavaScript online submissions for Basic Calculator II. |
1 | test("test1", () => { |
Clean JavaScript solution Recommend
大体流程差不多,但是数字是逐字处理累加,非常模板的答案(面试官估计会更想看这个)。
Concise JavaScript abusing replacements
非常巧妙的切入点,有点奇淫技巧了。
原题:454. 4Sum II
这道题用dfs会超时,最终用分治 + 2-Sum的思想 解出。
1 | // Runtime: 736 ms, faster than 9.18% of JavaScript online submissions for 4Sum II. |
1 | test("test1", () => { |
时间复杂度:O(2^n)
时间复杂度:O(n)
时间复杂度:O(logn)
重点来说下这种解法,下面是推导过程:
因此最终问题简化成求解 n-1个矩阵相乘 。类似pow(x, n)
,用分治法求解时间复杂度为log(n)
。
关于矩阵乘法,阮一峰老师的这篇文章讲得很清楚:理解矩阵乘法。
用js实现一个并查集
1 | class UFS { |
思路:路径染色
时间复杂度:O(n^2)
1 | // Runtime: 80 ms, faster than 29.80% of JavaScript online submissions for Number of Islands. |
思路:并查集
时间复杂度:O(n^2)
UFS的代码可参考 并查集的实现
1 | // Runtime: 180 ms, faster than 5.23% of JavaScript online submissions for Number of Islands. |
1 | test("test1", () => { |
路径染色更高效,并查集更符合直觉。
1 | // Runtime: 100 ms, faster than 57.51% of JavaScript online submissions for Edit Distance. |
1 | test("test1", () => { |
面试时候遇到的一道题,因为不熟悉编译原理,被虐的体无完肤。。。
1 | //写出下面的打印结果 |
第一个if语句中从左往右执行,0<100
为 true
,true<0
getPrimitive后变成 1<0
,因此第一个结果为 false
。
第二if语句中,+
优先级大于<
,因为变成 0<100<4
, 0<100
为 true
,true<4
getPrimitive后变成 1<4
,因此第一个结果为 true
。
运算符 | 描述 |
---|---|
. [] () | 字段访问、数组下标、函数调用以及表达式分组 |
++ – - ~ ! delete new typeof void | 一元运算符、返回数据类型、对象创建、未定义值 |
* / % | 乘法、除法、取模 |
+ - + | 加法、减法、字符串连接 |
<< >> >>> | 移位 |
< <= > >= instanceof | 小于、小于等于、大于、大于等于、instanceof |
== != === !== | 等于、不等于、严格相等、非严格相等 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
&& | 逻辑与 |
|| | 逻辑或 |
?: | 条件 |
= oP= | 赋值、运算赋值 |
, | 多重求值 |
1 | // Runtime: 168 ms, faster than 29.19% of JavaScript online submissions for Coin Change. |
1 | // Runtime: 112 ms, faster than 55.89% of JavaScript online submissions for Coin Change. |
1 | test("test1", () => { |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true