gpt4 book ai didi

java - 线程中的代码抛出异常 "main"java.lang.OutOfMemoryError : Java heap space

转载 作者:行者123 更新时间:2023-11-30 06:15:45 24 4
gpt4 key购买 nike

我正在尝试编写一段代码来使用列表列表来查找总和等于给定目标的三元组,但它会引发错误。我尝试增加 IntelliJ 和 Eclipse 中的堆大小,但它仍然抛出错误。以下是我的代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class TripleSum {

public List<List<Integer>> findNumbers(int[] nums, int target){
Arrays.sort(nums);
List<List<Integer>> al = new ArrayList<List<Integer>>();
ArrayList<Integer> lst = new ArrayList<>();
int l, r;
int n = nums.length;
for(int i=0; i<n; i++){
l=i+1;
r= n-1;
while(l<r){
if(nums[i]+nums[l]+nums[r]==target){
lst.add(nums[i]);
//lst.add(l);
//lst.add(r);
}

else if(nums[i]+nums[l]+nums[r]<target)
l++;
else
r--;

}
al.add(lst);
}
return al;
}

public static void main(String[] args){
int[] arr = {12, 3, 4, 1, 6, 9, 6};
TripleSum ts = new TripleSum();
System.out.println(ts.findNumbers(arr, 24));
}
}

最佳答案

我还没有运行调试器,但我怀疑您的问题出在这段代码中:

        while(l<r){
if(nums[i]+nums[l]+nums[r]==target){
lst.add(nums[i]);
//lst.add(l);
//lst.add(r);
}

else if(nums[i]+nums[l]+nums[r]<target)
l++;
else
r--;

}

让我们说l < r现在是这样。现在我们也说nums[i]+nums[l]+nums[r]==target是 true - 因此我们将添加 nums[i]lst变量。

else block 被跳过。

然后循环一直循环,变量没有改变。你将永远循环。并永远添加。当然,直到你耗尽空间,然后崩溃。

关于java - 线程中的代码抛出异常 "main"java.lang.OutOfMemoryError : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49239042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com