Average pair

两数相加平均数

  • 必须是被排序好的
  • 应用在找寻有哪些配对符合所要的数值
    接下来让我们实作吧!!!

回圈版BigO(n^2)

let array1 = [-11,0,1,2,3,4,5,6,7,8]
let iunputavg = 2

function Average(array, avg){
    let result = [] 
    for(let i = 0; i < array.length -1; i++){
        for(let j = 1; j < array.length -1; j++){ //index0已经当root了 所以j从index1开始即可
            if((array[i] + array[j]) /2 === avg){ //相加/2 === avg
                result.push([array[i],array[j]])
            }
        }   
    }return result
}
console.log(Average(array1, iunputavg))//[ [ 0, 4 ], [ 1, 3 ], [ 2, 2 ], [ 3, 1 ], [ 4, 0 ] ]

Pointer BigO(n)

let array1 = [-11,0,1,2,3,4,5,6,7,8]
let iunputavg = 2

function AveragePointer(array, avg){
    let left = 0
    let right = array.length -1 
    let result = []

    while(array[right] > array[left]){ //当index[i] > index[i-1] = true才执行
        if(((array[right] + array[left]) /2) > avg){
            right --    //若大於目标值 代表右边范围过大 right -1
        }else if(((array[right] + array[left]) /2) < avg){
            left ++     //若小於目标值 代表左边范围过大 left +1
        }
        else{ //若都符合push result
            result.push([array[right],array[left]])
            right-- //由於已经成功所以要缩小范围
            left++  //由於已经成功所以要缩小范围
        }
    }return result
}
console.log(AveragePointer(array1, iunputavg)) //[ [ 4, 0 ], [ 3, 1 ] ]


<<:  InterSection

>>:  CMoney软件工程师战斗营Stack&Queue/CSS_Week 12(爆炸的一周)

Day29:今天来聊一下CEH中讲的Cryptography

随着Internet越来越多地使用在商业和个人通讯,保护敏感讯息(例如:信用卡和 个人识别码(PIN...

Day 12 多工等待跟号志同步与信用追踪同步

我们在本篇来说一下,号志使用的第二种方式:多工等待跟号志同步。 如果说,有三个优先任务在执行多工处理...

科学家与研究生的关系 研究篇

小的时候,曾有个做科学家的梦想,但不得其门而入,直到上了研究所,才慢慢了解科学家的由来。 在台湾,国...

Ruby on Rails ⾃订验证器 Validator

现有的验证器不够⽤吗?有几种⽅式可以⾃订验证器: 写⼀个⽅法,挂到 validate ⽅法上: cl...

Day19-JavaScript(JS)与TypeScript(TS)的函式(Function) Part1

这两天要来带大家看看JavaScript(JS)与TypeScript(TS)的函式(Functio...