30 天刷题计划(七)

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

2629. 复合函数

思路

使用 reduceRight 执行 fn,执行的结果作为下一个 fn 的入参

代码

ts 复制代码
function compose(functions: F[]): F {  
	return (x) => functions.reduceRight((sum, fn) => fn(sum), x)
};

2703. 返回传递的参数的长度

代码

ts 复制代码
function argumentsLength(...args: JSONValue[]): number {
	return args.length
};

2666. 只允许一次函数调用44

思路

使用闭包存储一个变量记录是否调用

代码

ts 复制代码
function once(fn: Function): OnceFn {
  let used = false  
	return function (...args) {
	  try {
      return fn(...args)
    } finally {
      fn = () => {}
    }
	};
}

1732. 找到最高海拔

思路

按题意计算最大值

代码

ts 复制代码
function largestAltitude(gain: number[]): number {
  let start = 0
  let res = [start]

  for(let i = 0; i < gain.length; i++) {
    res.push(start += gain[i])
  }

  return Math.max(...res)
};

724. 寻找数组的中心下标

思路

一次遍历,左右值相等则返回当前数组索引,否则返回 -1

代码

ts 复制代码
const sumArr = (arr) => {
  return arr.reduce((prev, cur) => prev + cur, 0)
}

function pivotIndex(nums: number[]): number {
  let sum = sumArr(nums)
  let right = sum
  let left = 0

  for (let i = 0; i < nums.length; i++) {
    right -= nums[i]
    if (left === right) {
      return i
    }
    left += nums[i]
  }

 return -1
};

2215. 找出两数组的不同

思路

一种直接用 js 的数组方法;第二种借助 map 对象;

代码

ts 复制代码
/// 数组解法
function findDifference(nums1: number[], nums2: number[]): number[][] {
  const d1 = nums1.filter(n => !nums2.includes(n))
  const d2 = nums2.filter(n => !nums1.includes(n))

  return [[...new Set(d1)] , [...new Set(d2)]]
};

///  Map 解法
function findDifference(nums1: number[], nums2: number[]): number[][] {
  return [getDiff(nums2, nums1), getDiff(nums1, nums2)]
};

const getDiff = (arr1, arr2) => {
  const res = []
  const map = new Map()

  arr1.forEach(n => map.set(n, 1))
  arr2.forEach(n => {
    if (!map.has(n)) {
      res.push(n)
    }
  })

  return [...new Set(res)]
}
相关推荐
欧阳小猜16 分钟前
机器学习④【算法详解:从决策树到随机森林】
算法·决策树·机器学习
2501_9247314719 分钟前
复杂路况下车牌识别准确率↑19%:陌讯动态特征融合算法实战解析
人工智能·算法·目标检测·计算机视觉·目标跟踪
Bdygsl1 小时前
前端开发:CSS(2)—— 选择器
前端·css
斯~内克1 小时前
CSS包含块与百分比取值机制完全指南
前端·css·tensorflow
weixin_307779135 小时前
Redis Windows迁移方案与测试
c++·windows·redis·算法·系统架构
仪器科学与传感技术博士7 小时前
python:讲懂决策树,为理解随机森林算法做准备,以示例带学习,通俗易懂,容易理解和掌握
python·算法·决策树
小指纹7 小时前
cf--思维训练
c++·算法·macos·ios·objective-c·cocoa
小指纹7 小时前
河南萌新联赛2025第(四)场【补题】
数据结构·c++·算法·macos·objective-c·cocoa·图论
菜鸟555557 小时前
河南萌新联赛2025第四场-河南大学
c++·算法·思维·河南萌新联赛
百万蹄蹄向前冲7 小时前
秋天的第一口代码,Trae SOLO开发体验
前端·程序员·trae