【 每天学习一点算法 2026/04/22】四数相加 II

每天学习一点算法 2026/04/22

题目:四数相加 II

给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:

0 <= i, j, k, l < n

nums1i + nums2j + nums3k + nums4l == 0

为了减少前台循环,我们可以先循环计算两个数组的元素和,再计算两个数组的元素和看是否是之前两个数组和的相反数

javascript 复制代码
function fourSumCount(nums1: number[], nums2: number[], nums3: number[], nums4: number[]): number {
  const map = new Map<number, number>() // 用于记录num1和num2的元素和,key为和,value为出现的次数
  const n = nums1.length // 数组长度
  // 循环计算 num1 和 num2 的元素和
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      const sum = nums1[i] + nums2[j] // 元素和
      // 存储计算结果
      if (map.has(sum)) {
        map.set(sum, map.get(sum) + 1)
      } else {
        map.set(sum, 1)
      }
    }
  }
  let count = 0 // 满足条件的元组计数
  // 循环计算 num2 和 num3 的元素和
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      const sum = nums3[i] + nums4[j] // num2 和 num3 的元素和
      if (map.has(-sum)) {
        // 找到符合条件的元组计数
        count += map.get(-sum)
      }
    }
  }

  return count
};

题目来源:力扣(LeetCode)

相关推荐
拓恒技术3 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨3 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫4 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
学长毕设5 小时前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
罗西的思考5 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
淡海水5 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
下一站春风里7 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
DRobot8 小时前
【机械制图与CAD实战(二十五)】螺纹的表示方法
算法·机械制图
用户老李8 小时前
卡尔曼滤波自学教程 10:无迹卡尔曼滤波(UKF)
算法
小小de风呀8 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习