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

从integer[重复]类型的数组中取出索引子集

赵俊侠
2023-03-14

所以我有一个列表,其中有2个元素(假设[1,2]),现在方法的返回类型是int[],所以我需要将这个列表转换为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;
}
Integer[] boxed = l1.stream().filter(Objects::nonNull).toArray(Integer[]::new);
indexOfNums = ArrayUtils.toPrimitive(boxed);

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

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

共有1个答案

姜正初
2023-03-14

这可以通过将转换为intstream,该流具有toarray()方法,该方法生成int[]

l1.stream().filter(Objects::nonNull).mapToInt(Integer::intValue).toArray()
 类似资料: