日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【技巧】数组元素相加等于某个目标值,js实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。