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