给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
function TwoNum(target, arr){
const map = new Map(); // 利用es6的新特性
for(let i = 0; i < arr.length; i++){ // 遍历数组
const n1 = target - arr[i] // 找出差值
if(map.has(n1)){ // 判断map中
return [map.get(n1), i] // 返回结果
}
map.set(arr[i], i)
}
return []
}
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
function addOne(nums) {
for(var i = nums.length-1; i>=0; i--) {
console.log(nums[i])
if(nums[i] !== 9){
nums[i] ++
console.log(nums)
return nums
} else {
nums[i] = 0
}
}
return [1, ...nums]
}
实现Promise.all (每个promise resolve结果存数组,最后一个promise返回时,把数组返回)
// 版本一
Promise.all = function(promises){
let resutls = []
return new Promise((resolve) => {
promise.forEach((val) => {
val.then(res => {
results.push(res)
})
})
resolve(results)
})
}
Promise.prototype.all = function(promises){
let result = []
let promiseCouunt = 0
let promiseLength = promises.lenght
return new Promise((resolve, reject) => {
for(var i = 0; i < promiseLenght; i ++ ){
const val = pormises[i]
Promise.resolve(val).then(function(res){
promiseCount ++
results[i] = res
if(promiseCount === promiseLength){
return resolve(results)
}
}, function(err){
console.log(err)
})
}
})
}
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
function findProfit(list) {
let max = 0;
let len = list.length
for(var i = 0; i < len - 1; i++){
for(var j = 0; j < len; j ++) {
let n1 = list[i] - list[j]
let n1Post = Math.abs(n1)
if(n < 0 && n1Post > max){
max = n1Post
}
}
}
return max
}
实现typescript的Paramters、ReturnType (考察infer关键字使用)
实现一个并发请求控制函数,限制并发数
实现bind函数
实现快速排序