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

Posted

技术标签:

【中文标题】从整数类型的数组中取出索引子集[重复]【英文标题】:Take out sub set of indexes from array of type integer [duplicate] 【发布时间】:2021-09-21 11:12:25 【问题描述】:

所以我有一个 List,其中有 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(平方)。

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

【问题讨论】:

不,我不能使用 for 循环。如果它是可能的。 @MCEmperor 许多种可能的解决方案,包括list.stream().filter(Objects::nonNull).mapToInt(i -&gt; i).toArray()。并且使用流而不是 for 循环不会改变复杂性。 【参考方案1】:

这可以通过将Stream&lt;Integer&gt; 转换为IntStream 来完成,该IntStream 具有生成int[]toArray() 方法

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

【讨论】:

如果我使用它,它会给出 indexOfNums =l1.stream().filter(Objects::nonNull).mapToInt(Integer::intValue).toArray(); System.out.println(indexOfNums); //[I@4cdf35a9 [I@4cdf35a9 - 这是输出 @KavitaKulkarni 但这并不是因为这个答案有什么问题;那是因为您尝试直接打印数组。试试这个:System.out.println(Arrays.toString(indexOfNums)); 是的,这可行,但方法的返回类型是 int[]。所以我不能写下 return Arrays.toString(indexOfNums); @Jesper 现在你正在改变问题!如果您的最终目标是生成 String,请不要将 List 转换为数组。 此外,还有 >>isArrays.toString(int[]) 过载。检查 javadocs。

以上是关于从整数类型的数组中取出索引子集[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从字符串C++中取出整数[重复]

js从数组中取出n个不重复的数据

78.子集

Java 求解子集

递归与回溯10:子集,有重复元素

减去整数数组的索引的结果[重复]