Skip to content

如何快速找出两个数之和等于某一个值的两个数? #5

@JesseZhao1990

Description

@JesseZhao1990

如何从一个数组中快速找出两个数之和等于某一个值的两个数?

穷举法

用for循环的嵌套,穷举,这种方法的时间复杂度为O(n^2),是最差的方法

快排+双指针

function pickNumOfSum(arr,sum){
  var i,j;
  var n = arr.length;
  for(i=0,j=n-1;i<j;){
    if(arr[i]+arr[j]===sum){
      return [i,j]
    }else if(arr[i]+arr[j]<sum){
      i++;
    }else{
      j--;
    }
  }
  return [-1,-1];

}


var a = [10,8,98,3,5,9,8,20];
a = a.sort(function(x,y){
  return x-y;
})

pickNumOfSum(a,108)

如果换成是找出三个数之和满足某一条件的值呢?


Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions