Tag: 分区

如何将一组数字分成两组,使其总和的差异最小

如何编写Java程序将一组数字分成两组,使得各个数字之和的差异最小。 例如,我有一个包含整数的数组 – [5,4,8,2]。 我可以把它分成两个arrays – [8,2]和[5,4]。 假设给定的一组数字,可以像上面的例子一样有一个独特的解决方案,如何编写一个Java程序来实现解决方案。 即使我能够找出最小可能差异也没关系。 假设我的方法接收一个数组作为参数。 该方法必须首先将接收的数组分成两个数组,然后添加其中包含的整数。 此后,它必须返回它们之间的差异,使得差异可能最小。 PS-我在这里看了一下,但找不到任何具体的解决方案。 这里似乎给出了最可能的解决方案 – 将一个arrays分成两组,差别很小 。 但我无法从该线程中收集如何编写Java程序以获得问题的明确解决方案。 编辑: 看完@Alexandru Severin的评论后,我尝试了一个java程序。 它适用于一组数字[1,3,5,9],但不适用于另一组[4,3,5,9,11]。 以下是该计划。 请建议更改: – import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class FindMinimumDifference { public static void main(String[] args) { int[] arr= new int[]{4,3,5,9, 11}; FindMinimumDifference obj= new FindMinimumDifference(); obj.returnMinDiff(arr); […]

Java 8分区列表

是否可以将纯Jdk8中的List分区为相等的块(子列表)。 我知道可以使用Guava Lists类,但是我们可以使用纯Jdk吗? 我不想在我的项目中添加新的jar,仅用于一个用例。 解决方案 : tagir-valeev提出了迄今为止最好的解决方案: 我还发现了其他三种可能性 ,但它们只适用于少数情况: 1.Collectors.partitioningBy()将列表拆分为2个子列表 – 如下所示: intList.stream().collect(Collectors.partitioningBy(s -> s > 6)); List<List> subSets = new ArrayList<List>(groups.values()); 2.Collectors.groupingBy()将我们的列表拆分为多个分区: Map<Integer, List> groups = intList.stream().collect(Collectors.groupingBy(s -> (s – 1) / 3)); List<List> subSets = new ArrayList<List>(groups.values()); 3.分隔符拆分: List intList = Lists.newArrayList(1, 2, 3, 0, 4, 5, 6, 0, 7, 8); int[] indexes […]

Java分区表面成小方块

我想知道是否有任何算法做这样的事情: 给定一个特定的表面,它将它分成相同大小的较小矩形。 像这个示例图: 灰色区域是表面,红色方块是分区本身。 我在想是否有一种优化的方法来做到这一点。 一个非常糟糕的方法是在所有像素中使用for循环并检查是否有特定点的矩形,如果没有,将创建一个矩形,依此类推。 也许有人知道已经完成的算法? 还是更好的解决方案? 非常感谢提前;)

Java中的递归Quicksort的分区实现不起作用

写了这个递归快速排序算法的Java实现,并且似乎出错了,因为我尝试排序的数组几乎完全排序,除了应该切换的两个元素(靠近数组的中间)。 我想要排序的整数数组是:4,77,98,30,20,50,77,22,49,2(10个元素)。 这是我的代码: public static void quickSort(int[] array, int start, int end) { if (start < end) { int partition = partition(array, start, end); quickSort(array, start, partition – 1); quickSort(array, partition + 1, end); } } public static int partition(int[] array, int left, int right) { int pivotValue = array[(left + right) / 2]; //Value […]

是否有一个有效的整数分区算法,限制数量的部件?

我必须创建一个采用两个整数的方法,让它们为n和m ,并返回有多少种方法来求m正数来得到n 。 例如,像这个partition(6, 2)这样的方法调用应该返回3,因为有3种方法可能。 它们是5 + 1 4 + 2和3 + 3 。 顺便说一句, 4 + 2与2 + 4相同,因此该方法不应将它们视为两个不同的变化。 有人知道这个问题的解决方案吗? 更新: n和m不大于150。

如何在Java 8中对对象列表进行分页?

给定一个包含n元素和所需页面大小为m的java.util.List ,我想将其转换为包含n/m+n%m元素的映射。 每个地图元素应包含m元素。 这是一个整数的例子: List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // What is the equivalent Java 8 code to create the map below from my list? Map<Integer, List> map = new HashMap(); map.put(0, Arrays.asList(1,2,3)); map.put(1, Arrays.asList(4,5,6)); map.put(2, Arrays.asList(7,8,9)); map.put(3, Arrays.asList(10)); 这是可能的,使用Java 8?