编程题:一个数组中检测有没有某个数字等于数组内其他两个数字的和
最近做起编程题感到越来越感到驾轻就熟。今晚做了携程的笔试题,感觉是真的牛逼,三道编程题,有一道只能用Java、c或C艹来做。。表示C语言只存在大一的记忆里,果断放弃。
分享一下我的做法:
let arr = ['2','3','5','7','8'] function foo(arr,k){ let a2 = arr.map(ele=>ele*1) //把字符串类型转为数字类型 a2.sort((a,b)=> a-b) //数组从小到大排序 let i=0; let j=a2.length-1; while(i<j){ if(a2[i]+a2[j]==k){ return true }else if(a2[i]+a2[j]<k) { i++ }else{ j-- } } return false } let res = false; //遍历数组中每一个数字 for(let i=0; i<arr.length; i++){ let temp = foo(arr,arr[i]) if(temp==true){ res = true } } console.log(res);