挑战 LeetCode JavaScript 算法[简单]

LeetCode 前端算法题

难度:简单

2619. 数组原型对象的最后一个元素

ts 复制代码
Array.prototype.last = function() {
    let len = this.length
    if(len === 0) return -1
    return this[len -1]
};

处理数组长度为0 和,最后一个数据,当然使用 this 指向当前数组。

2620. 计数器

给定一个整型参数 n,请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n,每次调用它时会返回前一个值加 1 的值 ( n , n + 1 , n + 2 ,等等)。

ts 复制代码
/**
 * @param {number} n
 * @return {Function} counter
 */
var createCounter = function(n) {
    let ifInit = false; // 初始化 flat
    let res // 初始化闭包变量
    return function() {
        if (!ifInit) {
            ifInit = true
            res = n;
        } else {
            res += 1
        }
        return res
    };
};

/** 
 * const counter = createCounter(10)
 * counter() // 10
 * counter() // 11
 * counter() // 12
 */

这里有一点,要能处理 负数, 也就是不同使用 0 做假值判断。

2621. 睡眠函数

  • 接收一个正整数参数 millis ,并休眠 millis 毫秒。要求此函数可以解析任何值
  • 执行完时返回一个 Promise 对象
ts 复制代码
async function sleep(millis) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve()
    }, millis)
  })
}

很简单使用,使用 Promise 和定时器组合即可, 当然也可以简化语法:

ts 复制代码
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))

小结

本文主要介绍了三个简单的算法题,目的是前端方向其实是算法,三个题目主要关注的点是数组的长度访问,数组原型的 this 指向,计数器中的闭包的使用方法,使用 promise + setTimeout 实现经典的睡眠函数。

相关推荐
我不会起名字3226 小时前
会话缓存失效排查:区分 Redis 失效与节点广播
redis·后端·go·即时通讯·im·故障排查
treasure1406 小时前
【复古】浅尝Django前后端不分离
前端·css·python·django·bootstrap·html·web
深入云栈7 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
唐墨1237 小时前
linux kernel 比较数据大小的宏定义
linux·算法
JackJiang7 小时前
IM踩坑:聊天消息ID怎么设计?一个UUID搞不定,我用双ID解决
后端·架构
jay神7 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
开心猴爷7 小时前
iOS 上架 App 流程
后端·ios
屏什么录8 小时前
长时间录屏中途崩溃:MP4 打不开的 6 种救回方案与参数设置
前端·音视频开发
code_Bo8 小时前
不只命令行:我把跨 Agent 会话同步做成了桌面应用
前端·javascript·后端
拂拉氏8 小时前
【知识讲解-题目讲解】 统计满足K约束的子字符串数量2 (滑动窗口+前缀和+二分查找+分析)
算法·前缀和·二分查找·滑动窗口