1、代码

/** @Author: laifeipeng * @Date: 2019-02-20 17:36:01 * @Last Modified by: laifeipeng* @Last Modified time: 2019-02-21 14:31:33*/// 给一个数组(其元素不重复),求所有元素相加为某个值的2个元素对的下标对
// eg: [2, 9, 3, 10, 8, 1, 22] 目标值11,有[[0, 1], [2, 4], [3, 5]]<!--为了使函数功能更加强大,我的实现不仅提供了数组下标组,还提供了数组元素组-->function f(arr, target) {const a = arr.slice().sort((a, b) => a - b);const len = a.length;const key = [];//存放最后的元素组const val = [];//存放最后的下标组if (len <= 1) return;let i = 0;let j = len - 1;while (i < j) {if (a[i] + a[j] < target) {i++} else if (a[i] + a[j] > target) {j--} else {val.push([a[i], a[j]])key.push([i, j])i++; j--;}}// 如果只要下标组,则:return key;return {key, val}
}// 上面的算法实现需要排序数组,下面介绍一个不用排序的算法
function findNum2(arr, target) {const len = arr.length;const key = [];//存放最后的元素组const val = [];//存放最后的下标组if (len <= 1) return;for (let i = 0; i < len; i++) {const diff = target - arr[i];// 从i+1开始查询是否存在diff的值(下标)const index = arr.slice(i + 1).findIndex(i => i === diff);if (index !== -1) {key.push([i,index]);val.push([arr[i],arr[index]]);}}  // 如果只要下标组,则:return key;return {key, val}
}// 下面是测试
const arr = [2, 9, 3, 10, 8, 1, 22];
const target = 11;
console.log(f(arr, target))
console.log(g(arr, target))
// { key: [ [ 0, 5 ], [ 1, 4 ], [ 2, 3 ] ],
//   val: [ [ 1, 10 ], [ 2, 9 ], [ 3, 8 ] ] }
复制代码

2、效果图

【技巧】数组元素相加等于某个目标值,js实现相关推荐

  1. java数组元素相加_数组元素相加

    设计思路: 1.产生随机数放在数组中: 2.循环相加计算得到最终结果 3.用JOptionPane.showMessageDialog显示结果 流程图: 源程序代码: import javax.swi ...

  2. 数组元素两两组合 php,js多个数组元素两两组合三三组合

    我的思路是这样的: 先看成一个组合的问题([x]选n) 再写一个过滤器把含有有同一组元素的组合过滤掉. 这样扩展性会比较好; //合并数组 function concat(...arrs){ retu ...

  3. python两两组合_求数组中两两相加等于20的组合(Python实现)

    题目 求数组中两两相加等于20的组合. 例:给定一个数组[1, 7, 17, 2, 6, 3, 14],这个数组中满足条件的有两对:17+3=20, 6+14=20. 解析 分为两个步骤: 先采用堆排 ...

  4. 算法-查找数组两个数据相加等于目标值

    给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回他们的数组下标. 示例1: 输入:nums=[2,7,11,15] target =9 ...

  5. 数组两个整数相加 c语言,作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)...

    题目描述 给定一个整数数组,找出其中两个数相加等于目标值 输入 [1,3,5,7,9,11] 10 输出 1,9 3,7 代码: import java.util.HashMap; import ja ...

  6. 作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)

    题目描述 给定一个整数数组,找出其中两个数相加等于目标值输入 [1,3,5,7,9,11] 10输出 1,9 3,7 代码: import java.util.HashMap; import java ...

  7. 相加等于目标值的两个数

    题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标. 题目保证只有一种答案,但是要求给定数组 nums ...

  8. http://www.dewen.net.cn/q/15749/PHP求数组值相加(可重复)等于某值的所有组合

    http://www.dewen.net.cn/q/15749/PHP求数组值相加(可重复)等于某值的所有组合 tieGump 1 票 tieGump 8 例如 $data = array(1,2,4 ...

  9. leetcode/加减的目标值,给数组元素添加+或-号组成的表达式值=target的方案数

    代码 package com.xcrj;import java.util.Arrays;/*** 剑指 Offer II 102. 加减的目标值* 给定一个正整数数组 nums 和一个整数 targe ...

最新文章

  1. linux系统安装细节及磁盘分区划分
  2. iOS Block全面分析
  3. SRM 440(1-250pt, 1-500pt)
  4. 互换性与技术测量教材pdf_【检验】临床生物化学检验技术(第6版)人民卫生出版社【电子教材PDF】【人卫教材电子版】...
  5. 《Linux 鸟哥私房菜》 第一部分 Linux文件、目录与磁盘格式
  6. PHP-自定义模板-学习笔记
  7. 2008铁路旅客列车时刻表_重要消息!唐山站100多列旅客列车调整,12月30日起开始实行...
  8. 配置nginx+wordpress的https
  9. Nginx URL重写规则配置详解
  10. iOS 很酷的动画效果
  11. 凸优化中:单纯形是一种多面体的证明
  12. mkv无损转换成mp4,方法步骤
  13. CentOS7配简单的桌面环境openbox
  14. python远程主机强迫关闭了_[转] python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054...
  15. JavaWeb - 仿小米商城(5):商品详情展示
  16. 集成电路ic是什么?
  17. 植物三维模型快速重建
  18. SQL 内连接、左连接、右连接案例
  19. idea中的Diagram功能,查看类图
  20. 跳槽如何谈薪资?不以升职加薪为目的的跳槽,都是耍流氓!

热门文章

  1. java图像识别算法_图像算法原理与实践——绪论
  2. c语言订餐管理系统报告,用c语言编程小型的订餐管理系统,谁会啊?
  3. v-viewer图片打不开一直在刷新_WordPress 上传图片时 async-upload.php出现520 Bug的原因及解决方案...
  4. php中删除数组元素的函数,php删除数组中的元素函数用法汇总
  5. setting an array element with a sequence.
  6. linux pci扫描链表,Linux Kernel ---- PCI Driver 分析
  7. php对提交数据转码,如何使用php程序实现媒体转码消息的接收
  8. Python 应用 uWSGI + Nginx 部署
  9. CentOS7中通过二进制文件与配置环境变量的方式安装Node
  10. 若依前后端分离版(vue)中配置页面跳转的路由