js面试算法题

1、求两个数之和等于target值

let sum = function (nums, target) {

let length= nums.length;

let value= [];

for (var i= 0; i< length; i++){

let tempNum= target -nums[i];

value.push(tempNum);

let index=value.indexOf(nums[i+ 1]);

if (index> -1) {

return [index, i+1]

 break;

}

}

};

console.log( sum([1,6,4,7,2,3],13))

2、已经升序的数组  所有和为指定值的一对等于19的一对数字

let sum = 19;

let arr = [1, 2, 4, 6, 9, 10, 12,15, 17] /

for (var i = 0, j = arr.length- 1; i < j;) {

if (arr[i] + arr[j] < sum) {

i++;

} else if (arr[i] + arr[j] > sum) {

j--

} else {

console.log(arr[i] + '和' + arr[j])

i++;

j--;

}

}

 //选择排序

1、找出数组中最小(大)的值,把他放在数组起始位置。

2、找出剩余数组中最小(大)的值,把他放在数组的尾部。

3、重复第二部,直至排完。

function selectionSort(arr) {

var len = arr.length;

var minIndex, temp;

for (var i = 0; i < len - 1; i++) {

minIndex = i;

for (var j = i + 1; j < len; j++) {

if (arr[j] < arr[minIndex]) {    // 寻找最小的数

minIndex = j;                // 将最小数的索引保存

}

}

temp = arr[i];

arr[i] = arr[minIndex];

arr[minIndex] = temp;

}

return arr;

}

console.log(selectionSort([6,7,3,5,8,1,4,9,2]))

3、生成斐波那契数列 0,1,1,2,3,5,8,13,21.....

getFibonacci(n) {

  let fibArr= []

  let i= 0

  while (i< n) {

    if (i<= 1) {

      fibArr.push(i)

    } else {

      fibArr.push(fibArr[i- 1] + fibArr[i- 2])

}

    i++;

  }

  return fibArr

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容