题目描述输入一个数组和一个数,判断数组中是否存在三个数的和等于这个数
1 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
var target=27; var arr=[2,4,6,3,7,23,6,25,34,43,1,15,12,32,26,18,16]; for(var i=0;i<arr.length-3;i++){ for(var j=i+1;j<arr.length-2;j++){ for(var k=j+1;k<arr.length-1;k++){ if(arr[i]+arr[j]+arr[k]==target){ return true; } } } }
重新写了个算法:
var target=17;var arr=[1,21,1,3,2,9,10,11,19,17,6,7,12,16,16,1]; arr=arr.sort();//[1,1,1,2,3,6,7,9,10,11,12,16,16,17,19,21]for(var i=arr.length-1;i>1;i--){ if(arr[i]>=target) continue; for(var j=0;j<i-1;j++){ if(arr[i]+arr[j]>=target) break; for(var k=j+1;k<i;k++){ var sum=arr[i]+arr[j]+arr[k]; if(sum==target) return true; if(sum>target) break; } } }
添加回答
举报
0/150
提交
取消