首页 > 其他分享 >写一个方法,传入数字x,从一个一维数组里找到两个数字符合“n1 + n2 = x”

写一个方法,传入数字x,从一个一维数组里找到两个数字符合“n1 + n2 = x”

时间:2025-01-20 15:10:25浏览次数:1  
标签:arr const 数字 找到 complement 数组 n1 n2

在前端开发中,你可以使用JavaScript来编写这个方法。下面是一个简单的实现,它接受一个数字x和一个一维数组arr作为参数,并尝试在数组中找到两个数字,使它们的和等于x。如果找到了这样的两个数字,它会返回一个包含这两个数字的数组;如果没有找到,它会返回null

function findTwoNumbersThatSumToX(x, arr) {
    const numMap = new Map();

    for (let i = 0; i < arr.length; i++) {
        const complement = x - arr[i];
        if (numMap.has(complement)) {
            return [complement, arr[i]]; // 找到了一对数字,它们的和等于x
        }
        numMap.set(arr[i], i); // 将当前数字添加到map中,以便后续查找其补数
    }

    return null; // 没有找到符合条件的数字对
}

// 示例用法:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const x = 10;
const result = findTwoNumbersThatSumToX(x, arr);
console.log(result); // 输出:[1, 9] 或 [2, 8] 或 [3, 7] 或 [4, 6] 中的任意一对(取决于数组遍历的顺序)

这个方法使用了哈希表(在JavaScript中是Map对象)来存储已经遍历过的数字,以便在常数时间内查找某个数字的补数(即x减去当前数字的结果)。这使得整个算法的时间复杂度为O(n),其中n是数组的长度。

标签:arr,const,数字,找到,complement,数组,n1,n2
From: https://www.cnblogs.com/ai888/p/18681416

相关文章

  • 掌握精准农业:企业数字化转型的核心
      掌握精准农业:企业数字化转型的核心在快速变化的时代中,精准农业已成为现代科技与传统农事融合的重要领域。通过实现智能化管理、提高生产效率以及促进可持续发展,精准农业助力企业在激烈市场竞争中占据优势。本文将探讨掌握这一核心技术如何推动企业的数字化转型,并在新阶段提......
  • C语言的应用|猜数字游戏
    目录1.引言2.rand(包含在中)3.srand(包含在中)4.time(包含在中)5.游戏代码showtime1.引言  哈喽,大家好,好久不见。今天小邓儿,将带咱们用C语言,来写一个小游戏——猜数字。不过,编写游戏之前。先给大家拓展一些相关知识点(●'◡'●)2.rand(包含在<stdlib.h>中)1.1 ......
  • 数字图像的运算(3)
    一、图像的平移closeall;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量clearall;clc;I=imread('lenna.bmp');%输入图像a=50;b=50;%设置平移坐标J1=move1(I,a,b);%移动原图像a=-50;b=50;%设置平移坐标J2=move1(I,a,b);%移动原图像a......
  • 数字图像的运算(2)
    一、叠加后图像C和B的差异closeall;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量clearall;clcA=imread('tire.tif');%读取图像tire,并赋值给A[m,n]=size(A);%获取图像矩阵A的行列数m,nB=imread('eight.tif');......
  • 【自学嵌入式(5)环形电阻、数码管、随机数字程序】
    环形电阻、数码管、随机数字程序环形电阻*概念**特点*共阴极数码管*概念*随机数字程序本篇文章将会手动搭建一个电路,使用到的硬件主要有面包板一个、若干杜邦线、UNO开发板一个、按键开关一个、一个200-500欧姆的电阻、共阴极数码管一个由于对即将要使用的环形电......
  • TensorFlow手写数字识别
     In [1]:importnumpyasnpimportmatplotlib.pyplotaspltimporttensorflowastffromsklearn.preprocessingimportStandardScalerimportpandasaspd In [2]:(x_train_all,y_train_all),(x_test,y_test)=tf.keras.datasets.mn......
  • R 实现英文数字验证码识别
    R的强大扩展生态使其也能完成OCR任务,我们将结合magick包(图像处理)和tesseract包(OCR)来实现。安装所需包在R环境中,安装以下R包:R更多内容访问ttocr.com或联系1436423940install.packages("magick")install.packages("tesseract")R实现代码编写以下R代码来完......
  • Perl 实现英文数字验证码识别
    我们将通过结合TesseractOCR和ImageMagick工具来实现图像处理和文本识别。安装依赖确保已安装以下工具和模块:TesseractOCR:用于文本识别。ImageMagick:用于图像处理。Perl模块:Image::Magick和Tesseract::OCR。在命令行中执行以下命令:bash安装TesseractOCRsudo......
  • MATLAB 实现英文数字验证码识别
    MATLAB是一个强大的数值计算和图像处理工具,结合其内置的图像处理工具箱和OCR功能,可以轻松完成验证码识别任务。前置准备安装MATLAB确保你的MATLAB版本支持OCR功能(通常需要安装ComputerVisionToolbox)。如果没有,先通过MATLAB的工具箱管理器安装该工具箱。准备验......
  • 数电课设:数字时钟(扬州大学)
    1.设计任务及要求1.1课程设计的目的:1.了解与课题有关的电子电路以及元器件的工程技术规范、能按设计任务书的要求完成设计任务、编写设计说明书、正确地反映设计与实验的成果、正确地绘制电路图等;2.使我们进一步掌握数字电子技术的理论知识,培养学生工程设计能力和综合分析......