编程题:一个数组中检测有没有某个数字等于数组内其他两个数字的和

最近做起编程题感到越来越感到驾轻就熟。今晚做了携程的笔试题,感觉是真的牛逼,三道编程题,有一道只能用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);

 

posted @ 2020-04-01 20:22  逆战-顶瓜瓜  阅读(326)  评论(0编辑  收藏  举报