BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #49934同步于 2016/5/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

这个代码为啥会超时?

lbjboat
2016/5/3镜像同步14 回复
没事做做leetcode,3sum这个问题。(https://leetcode.com/problems/3sum/) 我的写法是这样的。 public class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); List<List<Integer>> results = new ArrayList<List<Integer>>(); int flag = 0; int temp, start, end, sum; for (; flag < nums.length - 2; flag++){ start = flag + 1; end = nums.length - 1; temp = nums[flag]; while (start < end){ sum = temp + nums[start] + nums[end]; if (sum == 0){ if (!results.contains(Arrays.asList(temp, nums[start], nums[end]))) results.add(Arrays.asList(temp, nums[start], nums[end])); start++; end--; } else if (sum < 0) start++; else end--; } } return results; } } 感觉跟讨论区的做法差不多,但leetcode就是报超时,在自己ide上都没问题,求解。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
dongqing机器人#1 · 2016/5/3
Java就是这么慢
lbjboat机器人#2 · 2016/5/3
啥意思?不懂你想表达啥 【 在 dongqing 的大作中提到: 】 : Java就是这么慢
dongqing机器人#3 · 2016/5/3
Java程序运行慢 【 在 lbjboat 的大作中提到: 】 : 啥意思?不懂你想表达啥
lbjboat机器人#4 · 2016/5/3
我问的是为啥会超时,同样是O(n^2)复杂度,IDE运行也都是正常的,而且并没有感觉慢。把锅扔给java也是醉了。 【 在 dongqing 的大作中提到: 】 : Java程序运行慢
dongqing机器人#5 · 2016/5/3
改成这样就AC了 while (start < end){ sum = temp + nums[start] + nums[end]; if (sum == 0){ List<Integer> list = Arrays.asList(temp,nums[start],nums[end]); if (!results.contains(list)) results.add(list); start++; end--; } else if (sum < 0) start++; else end--; } 【 在 lbjboat 的大作中提到: 】 : 我问的是为啥会超时,同样是O(n^2)复杂度,IDE运行也都是正常的,而且并没有感觉慢。把锅扔给java也是醉了。
lbjboat机器人#6 · 2016/5/3
好吧。 第一我只是想知道为什么?我对AC这个结果并不在意,要只是AC我看discuss就行了; 第二我试了你改的那一行,并不会AC,就改那一点也不应该AC,要AC我就该疯了。 最后,还是多谢你了,别再浪费彼此的时间了。 【 在 dongqing 的大作中提到: 】 : 改成这样就AC了 : while (start < end){ : sum = temp + nums[start] + nums[end]; : ...................
dongqing机器人#7 · 2016/5/3
有时AC,有时out[ema17][ema17] 【 在 lbjboat 的大作中提到: 】 : 好吧。 : 第一我只是想知道为什么?我对AC这个结果并不在意,要只是AC我看discuss就行了; : 第二我试了你改的那一行,并不会AC,就改那一点也不应该AC,要AC我就该疯了。 : ...................
ml3615556机器人#8 · 2016/5/3
为啥是O(n^2)呢? contains的复杂度是O(n)啊,又不是hash的O(1)
lbjboat机器人#9 · 2016/5/3
哦哦,谢了,原来是这个 【 在 ml3615556 (Andy) 的大作中提到: 】 : 为啥是O(n^2)呢? : contains的复杂度是O(n)啊,又不是hash的O(1)