返回信息流如图,代码逻辑一毛一样,怎么差这么多
但是我在本地用了一个很长的测试用例测了一下,go和java的运行时间差不多,go 20ms ,java 26ms
所以是为什么呢
这是一条镜像帖。来源:北邮人论坛 / golang / #1070同步于 2018/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Golang机器人发帖
又发现一个有趣的问题
cc19931002
2018/5/9镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
func threeSum(nums []int) [][]int {
var res [][]int
sort.Ints(nums)
for i:=0;i<len(nums);i++{
if nums[i]>0{
break
}
if i==0||nums[i]!=nums[i-1]{
start,end := i+1,len(nums)-1
target := 0-nums[i]
for start<end{
if nums[start]+nums[end]==target{
res = append(res,[]int{nums[i],nums[start],nums[end]})
for start<end&&nums[start]==nums[start+1] {
start++
}
for start<end&&nums[end]==nums[end-1]{
end--
}
start++
end--
}else if nums[start]+nums[end]<target{
start++
}else{
end--
}
}
}
}
return res
}
public static List<List<Integer>> threeSum(int[] num) {
Arrays.sort(num);
List<List<Integer>> res = new LinkedList<>();
for (int i = 0; i < num.length-2; i++) {
if (i == 0 || (i > 0 && num[i] != num[i-1])) {
int lo = i+1, hi = num.length-1, sum = 0 - num[i];
while (lo < hi) {
if (num[lo] + num[hi] == sum) {
res.add(Arrays.asList(num[i], num[lo], num[hi]));
while (lo < hi && num[lo] == num[lo+1]) lo++;
while (lo < hi && num[hi] == num[hi-1]) hi--;
lo++; hi--;
} else if (num[lo] + num[hi] < sum) lo++;
else hi--;
}
}
}
return res;
}