30 天刷题挑战(十一)

题目来源: LeetCode 75 30 天 JavaScript 挑战

2627. 函数防抖

思路

使用定时器

代码

ts 复制代码
function debounce(fn: F, t: number): F {
    let timer

    return function(...args) {
      if (timer) {
        clearTimeout(timer)
      }

      timer = setTimeout(() => {
        fn(...args)
      }, t)        
    }
};

2721. 并行执行异步函数

思路

返回一个新的 Promise, 顺序执行数组中的方法,发生 reject 时,外部的 Promise 对象也 reject

代码

ts 复制代码
function promiseAll<T>(functions: Fn<T>[]): Promise<T[]> {
  return new Promise((resolve, reject) => {
    const res = []
    let count = 0

    for(let i = 0; i < functions.length; i++) {
      const fn = functions[i]
      fn().then(r => {
        res[i] = r
        count++
        if (count === functions.length) {
          resolve(res)
        }
      }).catch(reject)
    }
  })
};

2095. 删除链表的中间节点

思路

快慢指针,快指针的速度是慢指针的两倍,快指针走到末位置,慢指针在中间位置,执行删除操作

代码

ts 复制代码
function deleteMiddle(head: ListNode | null): ListNode | null {
   if (head.next === null) {
     return null
   }

   let tmp = new ListNode(0, head)
   let slow = tmp
   let fast = head

   while(fast !== null && fast.next !== null) {
     slow = slow.next
     fast = fast.next.next
   }
   slow.next = slow.next.next

  return head
};

328. 奇偶链表

思路

使用奇偶指针,保存第一个偶数节点,even.next 是下一个奇数结点,odd.next 是下一个偶数节点,最后链接奇偶链

代码

ts 复制代码
function oddEvenList(head: ListNode | null): ListNode | null {
  if (head === null) {
    return head
  }

  let odd = head
  let even = head.next
  let evenhead = even 

  while(even !== null && even.next !== null) {
    odd.next = even.next
    odd = odd.next
    even.next = odd.next
    even = even.next
  }
  // 链接奇偶链表
  odd.next = evenhead

  return head
};

本文完,感谢阅读 🌹

相关推荐
a1117762 小时前
医院挂号预约系统(开源 Fastapi+vue2)
前端·vue.js·python·html5·fastapi
0思必得03 小时前
[Web自动化] Selenium处理iframe和frame
前端·爬虫·python·selenium·自动化·web自动化
一匹电信狗3 小时前
【LeetCode_547_990】并查集的应用——省份数量 + 等式方程的可满足性
c++·算法·leetcode·职场和发展·stl
鱼跃鹰飞4 小时前
Leetcode会员尊享100题:270.最接近的二叉树值
数据结构·算法·leetcode
行走的陀螺仪5 小时前
uni-app + Vue3编辑页/新增页面给列表页传参
前端·vue.js·uni-app
梵刹古音5 小时前
【C语言】 函数基础与定义
c语言·开发语言·算法
编程彩机5 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
筵陌5 小时前
算法:模拟
算法
We་ct5 小时前
LeetCode 205. 同构字符串:解题思路+代码优化全解析
前端·算法·leetcode·typescript
renhongxia16 小时前
AI算法实战:逻辑回归在风控场景中的应用
人工智能·深度学习·算法·机器学习·信息可视化·语言模型·逻辑回归