javascript|数组求和为指定数字

给定一个升序整型数组,以及一个指定的值。打印出数组中两数之和为指定值的一个整数对,要求复杂度为O(n)
方法一:
计算一左一右两边计算,
array[left] + array[right] 大于 num right --;
array[left] + array[right] 小于num left ++
left 与 right 相等就是没有找到了。

function sumArray(array,num){ if(!array.length && !num){ return 'argument error!'; ; }var left = 0, right = array.length - 1; while(left != right){ var nowsum = array[left] + array[right]; if(nowsum== num){ return array[left] + '+' + array[right] + '=' + num; } else if( nowsum < num){ left ++ ; } else if(nowsum > num){ right -- ; } } return 'Not Find!'; } var arr = [1,2,3,5,7,8,9,10,14,19]; sumArray(arr,15); //"1+14=15"

方法二:
【javascript|数组求和为指定数字】求得 numarray[i] 的差值 remainder ,再到数组中去找remainder ,如果 remainder 存在且不为i就找到了。
function sumArray2(array,num){ if(!array.length && !num){ return 'argument error!'; ; }for(var i = 0; i < array.length; i ++){ var remainder = num - array[i]; var index = array.indexOf(remainder); if(index > -1 &&index != i){ return array[i] + '+' + remainder + '=' + num; } }return 'Not Find!'; } var arr = [1,2,3,5,7,8,9,10,19]; sumArray2(arr,15); //"5+10=15"

参考链接: 找出数组中两数之和为指定值的所有整数对

    推荐阅读