30 天刷题计划(五)

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

11. 盛最多水的容器

思路

双指针,一个从数组开头,一个从数组结尾分布计算最大值

代码

ts 复制代码
function maxArea(height: number[]): number {
  let max = 0
  let p1 = 0
  let p2 = height.length - 1

  while(p1 < p2) {
    if (height[p1] < height[p2]) {
      max = Math.max(max, (p2 - p1) * height[p1])
      p1++
    } else {
      max = Math.max(max, (p2 - p1) * height[p2])
      p2--
    }
  }

  return max
};

1679. K 和数对的最大数目

思路

首先将数组排序方便计算,使用双指针,前后扫描对比 k,移动指针

代码

ts 复制代码
function maxOperations(nums: number[], k: number): number {
  let result = 0
  // 排序,方便计算
  nums = nums.sort((a, b) => a - b)
  // 左右指针
  let start = 0
  let end = nums.length - 1

  while(start < end) {
    let sum = nums[start] + nums[end]

    if (sum === k) {
      result++
      start++
      end--
    } else if (k > sum) {
      start++
    } else {
      end--
    }
  }

  return result
};

643. 子数组最大平均数 I

思路

使用滑动窗口找出最大子数组的和,子数组的和最大那么子数组的平均数也是最大。

代码

ts 复制代码
function findMaxAverage(nums: number[], k: number): number {
  let max = 0
  // 计算前 k 项子数组和
  for(let i = 0; i < k; i++) {
    max += nums[i]
  }

  let maxSum = max

  for (let i = k; i < nums.length; i++) {
    // 从头开始计算最大子数组的和
    max = max - nums[i - k] + nums[i]
    maxSum = Math.max(maxSum, max)
  }

  return maxSum / k
};

2635. 转换数组中的每个元素

代码

ts 复制代码
function map(arr: number[], fn: (n: number, i: number) => number): number[] {
  let res = []

  for(let i = 0; i < arr.length; i++) {
    res.push(fn(arr[i], i))
  }
 
  return res
};
相关推荐
Ai-_Man8 小时前
我需要批量导出Poe左边栏所有对话,而不是一条具体的对话内容,你们AI导出鸭可以吗?
开发语言·前端·javascript·人工智能·小程序
java1234_小锋8 小时前
【技术专题】HTML5 网页技术 - Web Storage 本地存储 & 文件 API & 拖放 API
前端·html·html5
恋猫de小郭8 小时前
Flutter 官方表示:AI 时代代码越来越容易写,为什么还要一套代码库?
android·前端·flutter
软件派8 小时前
Chrome 插件开发实战指南
前端·chrome
ly76898 小时前
性能剖析与压测方法论:JMH、async-profiler 与分层瓶颈定位的可复现实验
服务器·前端·数据库·压测·jmh·性能剖析·async-profiler
Cccp.1238 小时前
【leetcode】(十四)从暴力递归到动态规划
数据结构·算法·leetcode·动态规划
ZoeLandia8 小时前
React05:useEffect 与副作用
开发语言·前端·react.js·typescript
Sailing8 小时前
【封闭结束2】Agent 意图识别:从语义理解到稳定路由
人工智能·面试·agent
狮子座的男孩8 小时前
html+css基础:24、2D变换(位移/缩放/旋转/扭曲(了解)/多重变换/变换原点)
前端·css·经验分享·html·2d位移·原点变换·缩放/旋转/扭曲
Sailing8 小时前
【封闭结束1】端到端交付:Agent 一次请求如何走完全链路
人工智能·面试·agent