java - 如何将给定的数字列表划分为 N 个数组,其中每个数组的总和最接近特定数字 M?
问题描述
给定数组int[] arr = {3,4,7,8,9,10,12,14,14,25,25,28,30,32}
给定具体数字int M = 33
问题是如何将数组划分为数组数量,arr
以便N
数组的每个总和都试图达到 33(因为 M=33)。我的主要目的只是获得较低的 N 值,最终结果如下所示:
arr1 = {32}
arr2 = {3,30}
arr3 = {4,28}
arr4 = {8,25}
arr5 = {7,25}
arr6 = {4,14}
arr7 = {9,12,10}
这导致我得到 N = 7 个数组,如果你得到的数组少于 7 个,请纠正我,因为我试图获得尽可能少的数量N
。
约束:
- 给定数组中的每个元素只能使用一次
解决方案
首先,我建议使用蛮力遍历数组中总和为 32 的所有元素,然后,每次 arr[i] + arr[j] = 32 将其作为新对象返回,返回 new int[] {}; (方法应该是数组返回类型)
推荐阅读
- jhipster - jhipster openapi-client,无法生成客户端代码
- oracle - 在 Oracle sql 加载器控制文件中跳过 CSV 文件中的第一个字符
- azure - Azure 存储 blob UploadText 方法是原子的吗?
- c# - 如何使用现有的 SQL 查询从 MS SQL 获取 .NET Core WEP API 项目中的数据?
- zsh - ZSH 自定义函数,如重复
- ios - 在数组中插入一个对象 swift
- python - 当它应该增加它时递归减少值
- javascript - 是否可以使用 django 或 node.js 访问用户的文件系统并在他的文件系统上执行 CRUD 操作?
- git - github revert commit 似乎毁了我的项目
- c++ - 找不到 Boost(缺少:文件系统)(找到版本“1.64.0”)