我需要使用流API实现一个方法int minValue(int[]values)。该方法采用从0到9的整数数组,取唯一值,并返回这些唯一数字组合的最小可能数。我不能把数组转换成字符串。
示例#1:输入{1,2,3,3,2,3},返回值-123;
多谢了。
我使用简单的for循环的解决方案如下:
private static int minValue3(int[] values) {
int result = 0;
int capacity = 1;
int[] ints = Arrays.stream(values).boxed().distinct().sorted(Collections.reverseOrder())
.mapToInt(Integer::intValue).toArray();
for (int i = 0; i < ints.length; i++) {
result = result + ints[i] * capacity;
capacity = capacity * 10;
}
return result;
}
下面是一个方法:
final int[] result = {0};
Arrays.stream(values).boxed().distinct().sorted()
.mapToInt(Integer::intValue).forEach(i -> result[0] = i + result[0] * 10);
return result[0];
问题内容: 我正在尝试在数组中找到数字的最小值,但并非总是能正常工作。这是我写的代码: 有人可以纠正我吗? 问题答案: 不需要外部循环,它只运行一次,并且无论如何您都不会使用。你为什么有它? 对于内部循环,您需要与最小值进行比较。现在,您正在将其与数组中的第一个元素(不一定是最小值)进行比较。 另外,您可以从1开始循环,因为您不需要与自身进行比较(它只分配给)
问题内容: 谁能向我解释如何在不使用数组或字符串的情况下反转整数。我从网上获得了此代码,但并没有真正理解为什么+输入%10并再次除法。 以及如何使用此示例代码来仅反转奇数。例子我得到了这个输入12345,然后它将奇数反转为输出531。 问题答案: 我不清楚你的奇数。该代码的工作方式是(不是Java特定的算法)例如。输入= 2345 while循环中的第一次rev = 5输入= 234第二时间rev
使用,为什么它显示(原始类型)和数组的不同列表大小? a) 使用array,每当我执行以下程序时,列表大小=1 b) 但是如果我从数组类型更改为数组(比如),那么我得到的列表大小是4,我认为是正确的。 PS:使用(包装类)数组,结果就可以了,但我不确定为什么在primitive数组中,列表大小是1。请解释一下。
问题内容: 在处理从YQL返回的JSON时,我发现自己正在寻找一种从数组中提取所有唯一值的方法。 代码看起来有点“忙”,我想知道是否有更优雅的方法从数组中提取唯一值。 问题答案: 您可以使用indexOf来检查元素是否在数组中。 或者如果您具有唯一的ID或名称,则使用对象而不是数组:var output = {}
本页演示如何将两个对象数组组合为一个对象数组。 Arrays.ToString(合并):[10,20,30,40,50,60,70,80] 有没有一种方法可以使用Java流来串联一对基元值而不是对象的数组? 我意识到使用Java流可能不是最有效的方法。但我对原始生物和Java溪流的相互作用感到好奇。 我知道,但不知道如何将其用于此目的。
问题内容: 使用,为什么它对(原始类型)和数组显示不同的列表大小? a)对于数组,每当我执行以下程序时,列表大小= 1 b)但是,如果我从数组类型更改为array(如),则列表大小为4,我认为这是正确的。 PS :使用(包装类)数组,则结果很好,但是我不确定为什么在原始数组中列表大小为1。请解释。 问题答案: 由于Java泛型而无法保存原始值(请参阅类似的问题)。因此,当您调用Arrays 时,将