java - 从整数类型的数组中取出索引子集
问题描述
所以我有一个列表,其中有 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(平方)。
**我想要的是**如果两个数字的总和是目标,那么我想获得这些数字的索引。
解决方案
这可以通过将 转换Stream<Integer>
为IntStream
具有toArray()
生成方法的方法来完成int[]
l1.stream().filter(Objects::nonNull).mapToInt(Integer::intValue).toArray()
推荐阅读
- extjs - 如何使用 extJs 为字段集中的列中的项目设置浮动左配置?
- excel - 如何单击按钮并传递与 NO 相关的参数。多变的
- erlang - rebar3 无法获取和复制依赖项(LFE 项目)
- html - div 元素上方的绝对定位 SVG 显示 Firefox 中的间隙
- javascript - 在 javascript 构造函数中强制设置属性
- jquery - Jquery data.success 不适用于 laravel 5.8
- c# - 锚标记助手未生成正确的区域路线
- ios - 在 SwiftUI 中制作与父视图大小相同的形状
- java - 尝试使用基于密码的帐户使用 Firebase 进行身份验证
- javascript - 三元运算符第二部分不渲染 React JS