<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>算法-两数之和</title>
</head>
<body>
<script>
/** 两数之和: 获取数组arr中两数之和为sum的索引值 **/
const arr = [1,3,7,9,2];
const sum = 11;
// 复杂方式 时间复杂度: O(n^2) 空间复杂度:O(1)
const findTargetNum1= (arr, sum) => {
for(let p1 = 0; p1< arr.length; p1++){
for(let p2 = p1 + 1; p2 < arr.length; p2++){
if(arr[p1] + arr[p2] === sum){
return [p1, p2];
}
}
}
};
// 简单方式 时间复杂度: O(n^2) 空间复杂度:O(1)
const findTargetNum2 = (arr, sum) => {
const arrMap = {};
for(let p = 0; p < arr.length; p++){
if(arrMap[arr[p]] >= 0){
return [arrMap[arr[p]], p];
}else{
const value = sum - arr[p];
arrMap[value] = p;
}
}
return null;
};
console.log(findTargetNum1(arr, sum));
</script>
</body>
</html>