# 2 楼答案 输入分为三组这一事实在任何方面都重要吗?从你的问题来看,我不理解这种关系 我的第一反应是迭代3的所有组合,用三个数字之间的差值之和保存一个变量diff,用当前最佳组合保存另一个变量bestComb(最小值diff)。当你找到一个具有较低差异的组合时,你会替换diff和bestComb
# 3 楼答案 您可以尝试这种逻辑方法: 1.将映射键和值合并到一个数组或任何集合中 2.按你喜欢的分类 3.检查你的排序数组/集合,找出数字之间的偏差 示例(集合): Map<Integer,Integer> m = new HashMap<>(); m.put(100, 20); m.put(20, 99); m.put(35, 40); ArrayList sortedArray = new ArrayList<Integer>(); m.forEach((k,v)->{ sortedArray.add(k); sortedArray.add(v); }); // sortedArray stored all numbers Collections.sort(sortedArray); 现在,你可以通过这个集合来找到需要的偏差 sortedArray.forEach(cnsmr ->{ // some code }); 你能告诉我如何确定序列中每个元素的“期望值”吗???我不明白如果没有一系列的期望值,你怎么能得到最好的值。例如模式2的7.64
# 1 楼答案
我认为这是一个NP问题,因此最好的方法是在集合中循环并探索所有的组合。如果数据集总是3*2(这是你的例子),那么你将花费8次比较——这还不算太糟
# 2 楼答案
输入分为三组这一事实在任何方面都重要吗?从你的问题来看,我不理解这种关系
我的第一反应是迭代3的所有组合,用三个数字之间的差值之和保存一个变量diff,用当前最佳组合保存另一个变量bestComb(最小值diff)。当你找到一个具有较低差异的组合时,你会替换diff和bestComb
# 3 楼答案
您可以尝试这种逻辑方法:
1.将映射键和值合并到一个数组或任何集合中
2.按你喜欢的分类
3.检查你的排序数组/集合,找出数字之间的偏差
示例(集合):
现在,你可以通过这个集合来找到需要的偏差
你能告诉我如何确定序列中每个元素的“期望值”吗???我不明白如果没有一系列的期望值,你怎么能得到最好的值。例如模式2的7.64