gpt4 book ai didi

java - 如何处理此类错误以及为什么会发生?(超出内存限制)

转载 作者:行者123 更新时间:2023-12-01 19:06:03 29 4
gpt4 key购买 nike

这是一个leetcode问题。当我在 Eclipse 中运行我的代码时,一切都很好,但是当我将其提交给 leetcode 时,出现错误“超出内存限制”。如何处理它。

给定一组由出发和到达机场[出发地、目的地]表示的机票列表,按顺序重建行程。所有门票均属于从肯尼迪国际机场出发的一名男子。因此,行程必须从 JFK 开始。

注意:

如果有多个有效行程,则应返回作为单个字符串读取时词汇顺序最小的行程。例如,行程 ["JFK", "LGA"] 的词汇顺序比 ["JFK", "LGB"] 更小。所有机场均由三个大写字母(IATA 代码)表示。您可以假设所有门票至少形成一个有效的行程。

这是我的解决方案:

class Solution {
class Checker implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
}
public List<String> findItinerary(List<List<String>> tickets){
String begin="JFK";
final String example=begin;
List<String> solution = new ArrayList<>();
long counter=tickets.stream().filter(lister->lister.get(0).equals(example)).count();
List<String> lexic=tickets.stream().filter(lister->lister.get(0).equals("JFK")).map(p->p.get(1)).distinct().collect(Collectors.toList());
Comparator<String> comparator =new Checker();
lexic.sort(comparator);
solution.add(begin);
begin=lexic.get(0);
System.out.println(counter);
for(int i=0;i<tickets.size();i++) {
if(tickets.get(i).get(0).equals(begin)) {
if(!solution.contains(begin)) {
solution.add(begin);
}
begin=tickets.get(i).get(1);
solution.add(begin);
i=-1;
}
}
return solution;
}

}

最佳答案

出现此问题的原因是 lexic.sort() ,Java 在堆上创建了元素的附加副本,因此现在您拥有两倍的内存来解决该问题。为了解决这个问题,您必须对有向循环图使用图遍历技术,并根据词法排序做出决策,不需要词法或使用排序方法。

关于java - 如何处理此类错误以及为什么会发生?(超出内存限制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59554149/

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