首页 > 解决方案 > 从整数类型的数组中取出索引子集

问题描述

所以我有一个列表,其中有 2 个元素(假设 [1,2]),现在方法的返回类型是 int[],所以我需要将此 List 转换为 int[]。

这是我到目前为止的代码,

public int[] twoSum(int[] nums, int target) {

    List<Integer> l1 = new ArrayList<Integer>();
    int lengthOfnums = nums.length;
    int[] indexOfNums = new int[nums.length];
    if(lengthOfnums != 0)
    {
        for(int i=0; i <=lengthOfnums-1; i++)
        {
            for(int j =1; j<=lengthOfnums-1;j++)
            {
                if(nums[i] + nums[j] ==target)
                {
                   //l1.add(i);
                   //l1.add(j);
                    indexOfNums[i]=i;
                    indexOfNums[i+1]=j; // here somewhere logic goes boom


                }
            }

        }

    }
    return indexOfNums;
}

当我使用(对 l1 arrayList 进行操作)

Integer[] boxed = l1.stream().filter(Objects::nonNull).toArray(Integer[]::new);
indexOfNums = ArrayUtils.toPrimitive(boxed);

它给出的输出类似于 - [I@6bf2d08e,我认为这与内存地址有关,(这部分不确定)。所以这个没用。

我也不能使用 for 循环,因为我必须考虑我的方法的复杂性 O(n)。复杂度已经达到 O(n)2(平方)。

**我想要的是**如果两个数字的总和是目标,那么我想获得这些数字的索引。

标签: java

解决方案


这可以通过将 转换Stream<Integer>IntStream具有toArray()生成方法的方法来完成int[]

l1.stream().filter(Objects::nonNull).mapToInt(Integer::intValue).toArray()

推荐阅读