js 数组按奇偶拆分_js数组拆分问题
“笨”方法
(()=>{
console.clear();
let arrs = [102, 233, 45, 350, 130, 220, 195, 240].sort((a,b)=>a - b);
console.log(arrs, arrs.reduce((a,b)=>a + b, 0));
// 笨方法,穷举,不过在穷举时淘汰了一些值。全穷举需要跑256次,加上阀值了需要196次
var divideRes = divide(arrs);
console.log(divideRes, divideRes.reduce((a,b)=>a + b, 0));
function divide(array) {
var total = array.reduce((a,b)=>a + b, 0);
var half = total / 2;
var min = total;
var result = [];
var counter = 0;
for (let comb of fullCombination(array, half)) {
var sum = comb.reduce((a,b)=>a + b, 0);
if (sum > half && sum < min) {
min = sum;
result = comb.slice();
}
counter += 1;
}
// console.log(counter);
return result;
}
function *fullCombination(array, threshold) {
function *gen(array, prefix) {
if (array.length === 0) {
yield prefix;
} else {
if (prefix.reduce((a,b)=>a + b, 0) < threshold) {
yield*gen(array.slice(1), [...prefix, array[0]]);
yield*gen(array.slice(1), [...prefix]);
}
}
}
yield*gen(array, []);
}
}
)();
补充一个背包的解法,支持一下@冯恒智
var res = knapsack([102, 233, 45, 350, 130, 220, 195, 240].map(i=>({w: i,b: i})), ([102, 233, 45, 350, 130, 220, 195, 240].reduce((a,b)=>a + b, 0) / 2) << 0);
js 数组按奇偶拆分_js数组拆分问题相关推荐
- js array 删除指定元素_JS数组
JS其实没有真正的数组,只是用对象模拟数组 创建一个数组 Array.from可以将不是数组的尝试变成数组 只会在符合条件下才能转化成功:该对象有0,1,2,3这种下标和length属性 伪数组:如果 ...
- c语言指针数组元素奇偶排列,关于数组奇偶调序问题的总结
数组的奇偶调序问题,主要考察的是对数组下标或者数组指针的灵活操作."双下标"策略或者"双指针"策略是屡试不爽的一个方案. 奇偶调序无非有两大类情况:奇偶边排,奇 ...
- js数组查找最接近_js 数组快速查询指定字符串方法
有一个动态数组,[adfjsf,ad2fjsf,adf32jsf,ad4fjsf,ad523fjsf,a523dfjsf,ad423fjsf,adfjs234f,......] 我想查查数组是否有ab ...
- JAVA数组扁平化整合_JS数组扁平化(flat)方法总结详解
需求:多维数组=>一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 第0种处理:直接的调用 arr_ ...
- java数组元素替换操作_js数组操作(添加、删除、替换元素)
1.添加元素 函数:push(para),参数说明para要添加的元素 示例: var lang = ["php","java","javascrip ...
- js 数组按奇偶拆分_力扣:按奇偶排序数组js
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素. 你可以返回满足此条件的任何数组作为答案. 示例: 输入:[3,1,2,4] 输出:[2,4,3,1] 输 ...
- js用递归遍历多维数组_js面试题更新之40
1.数组方法pop() push() unshift() shift() push 后面添加元素,个数不限,返回新数组的长度 pop 从后面删除一个元素,返回那个元素 unshift ...
- Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组、split函数垂直拆分二维numpy数组
Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组.split函数垂直拆分二维numpy数组 目录
- Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组、split函数水平(按列)拆分二维numpy数组
Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组.split函数水平(按列)拆分二维numpy数组 目 ...
最新文章
- 二、如何保存MNIST数据集中train和test的图片?
- 【JUC系列】Future异步回调模式
- Python学习笔记----try...except...else
- springdata jpa单表操作crud
- 【POJ16553107】树的重心——点分治的准备
- Java foreach
- python 爬取了租房数据
- 据说学会这款数据分析工具,会被各大名企高薪哄抢
- [渝粤教育] 重庆工程职业技术学院 Linux服务器配置与管理(唐宏) 参考 资料
- 深入理解Yii2.0(1) 属性
- 基于springboot的民办职业学校缴费系统
- eclipse、EditPlus等编辑器选中列(块)的方法
- TMDB电影数据分析
- xp关闭计算机共享,关闭Windows XP系统默认共享四种方法
- 手把手接入高德地图API——POI周边搜索功能实现
- [视觉Slam十四讲(2)踩坑记录]第3讲:Fatal error :Eigen/core没有那个文件或目录
- 【Android】图形图像处理
- 输出100以内不能被7整除的数
- 软件开发过程反思——从需求分析到最后开发出来的软件
- AHBA| 如何建立Null模型控制富集分析中的假阳性偏差
热门文章
- java我的世界填充方块,我的世界怎么快速填充方块-快速填充方块攻略
- 小组取什么名字好_有创意的小组名有哪些
- 段码超低功耗LCD液晶显示驱动芯片(IC)-VKL系列-VKL128/060/076/144A/144B,VKL144A兼容MCP144
- here-document at line y delimited by end-of-file
- hdfs 元数据维护机制
- 大数据开发之Hive篇14-Hive归档(Archiving)
- Git - 强制覆盖本地代码[与远程仓库保持一致]
- jbox弹窗_强大的jquery弹出层插件jBox
- java通过poi导出excel和pdf
- 关于物联网时代的工控安全