从零开始用javascript刷题,需要学习什么:

语法

void函数的声明的写法:

function connectStep (left,right)

高级数据结构 容器

优先队列

含有这个数据结构的题解:373
https://github.com/datastructures-js/priority-queue#enqueue

const pq = new PriorityQueue(); 不可用
const pq = new MinPriorityQueue(); 在leetcode上可以编译,并可以重载compare()

373题解: https://leetcode-cn.com/problems/find-k-pairs-with-smallest-sums/solution/jsliang-jie-you-xian-dui-lie-dan-diao-zh-fff8/

map

可做哈希数组用(还是就是? 例,前缀和+哈希:560. 和为 K 的子数组

const count = new Map();

map.set(a,key)

map.get(key)

map.has(key)

map.delete(key)

哈希数组转为二维数组(for排序): https://www.jianshu.com/p/e0602d905d0b

数学运算 string转换等

Math.floor()

下取整

pow(num, 0.5)

开平方根

float.is_integer(num) or num.is_integer()

判断是不是整数

str.isdigit()

判断字符串是不是全由数字组成

Number.MAX_SAFE_INTEGE

为9007199254740991的一个数值,用过的题解:https://leetcode-cn.com/problems/network-delay-time/

Number.MAX_VALUE

-1*Number.MAX_VALUE 来表示极小的负数

~~运算符

将一些变量转化为Number(数字)类型的 在此的作用为: 对 x 进行取整,只取整数部分

7.整数反转

%运算符

本以为是取余,但是剑指offer14 II中,
Math.pow(3,27)%1000000007=597431612
Math.pow(3,36)%1000000007=246336698
Math.pow(3,27)%1000000007*Math.pow(3,9)=11759246418996
在代码中:7625597484987与1000000007取余得到597431612,597431612再乘Math.pow(3,9)得到11759246418996,还是对的
但11759246418996与1000000007取余得到246336683,就不对了

ASCII转换

it.charCodeAt()-‘a’.charCodeAt()

String.fromCharCode(num)

或者’stringHello’

复合数据结构(js自带

Array

数组删除nums[0]的元素 Array.shift()

排序 array.sort() 排序纯数字数组时,反而会出错,例如“25”>“101”,因为2>1。所以需要自己写cmp函数

截取slice()

可以单参数,从a开始

双参数,[a,b),类似python

String

取子串:

二维数组

声明方式(需要知道两个维的大小 map

二维数组的创建方法(304题官方题解)

this.sums = new Array(m +1).fill(0).map(() => new Array(n + 1).fill(0));

语法糖和新用法

未解之谜

while(p.right!=null) {//这句话写成while(!p.right) 会运行不了,说不能读一个Nullptr的right

  1. p=p.right;
  2. }