当前位置: 首页 > 知识库问答 >
问题:

通过使用Java Stream API组合int数组中的唯一值使int值最小

司业
2023-03-14

我需要使用流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;
    }

共有1个答案

邢晗日
2023-03-14

下面是一个方法:

    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 时,将