美文网首页
Javascript 给定一组数据,最终实现三组的和相差最小

Javascript 给定一组数据,最终实现三组的和相差最小

作者: 孟大仙 | 来源:发表于2021-03-23 19:15 被阅读0次
var arr = [1,3,56,78,34,23,67,5,67,8,9,54,33,56]
function miniDif (arr) {
  arr.sort((a, b) => b-a)
  let newArr = []
  let cloum1Sum = cloum2Sum = cloum3Sum = 0

  for (let i = 0; i < arr.length; i++){

    // 处理前3个元素
    if (i < 3){
      newArr[i] = []
      newArr[i].push(arr[i])

      // 初始3列值
      switch (i) {
        case 0:
          cloum1Sum = arr[i]
        case 1:
          cloum2Sum = arr[i]
        case 3:
          cloum3Sum = arr[i]
      }
    } else { // 处理后面的元素
      // 判断那个数组之和最小
      let num = Math.min(cloum1Sum, cloum2Sum, cloum3Sum)

      // 判断那列的和最小就往那列追加元素
      if (num === cloum1Sum) {
        newArr[0].push(arr[i])
        cloum1Sum += arr[i]
      } else if (num === cloum2Sum){
        newArr[1].push(arr[i])
        cloum2Sum += arr[i]
      } else {
        newArr[2].push(arr[i])
        cloum3Sum += arr[i]
      }
    }
  }
  return newArr
}
console.log(miniDif([1,3,56,78,34,23,67,5,67,8,9,54,33,56]))

相关文章

  • Javascript 给定一组数据,最终实现三组的和相差最小

  • 线段树

    对于一组数据a[],线段树可以实现以下操作: 1.给定x,y,求区间[x,y]的和; 2.给定x,y,k,将区间[...

  • 树状数组

    对于一组数据a[],树状数组可实现以下操作: 1.给定x,求a[1]+a[2]+...+a[x]; 2.给定x,k...

  • 44. 最小子数组

    最小子数组 描述 笔记 数据 评测 给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。 注意事项 子数组...

  • 【PAT_1038】Recover the Smallest N

    题目描述 给定一组数字段,从它们中恢复最小的数字。 例如,给定{32,321,3214,0229,87},我们可以...

  • codeforces-3D. Least Cost Bracke

    题意:给定一组字符,将?替换为 "(" 或 ")" 使括号配对,并且给定替换每个?所要耗费的值,打印消耗最小的序列。

  • Webpack4.X重修之路 --- 链式配置篇

    所有能用JavaScript实现的,最终都将用JavaScript实现 前言 为了熟悉webpack配置,每次重新...

  • 画一组同心圆

    画一组同心圆 描述 利用turtle库画一组同心圆。用户输入最小圆的半径、圆的个数和画笔颜色,每个相邻圆半径相差2...

  • 算法分析

    由最长子序和说起。。。给定一组数据求其连续一组数据的和的最大值;如:-2,11,-4,13,-5,-2; 因此算法...

  • JSON

    JSON: JavaScript Object Notation,将JavaScript对象中表示的一组数据转换为...

网友评论

      本文标题:Javascript 给定一组数据,最终实现三组的和相差最小

      本文链接:https://www.haomeiwen.com/subject/artqhltx.html