欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

算法系列1

程序员文章站 2024-03-16 13:17:22
...

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

 分析:思路很多,基本是遍历这个数组,进行逐个相加找出那个元素,返回下标

var twoSum = function(nums, target) {
    var len = nums.length-1;
    for(var i=0;i<len;i++){
        if(nums[i] + nums[i+1] == target){
            return [i,i+1]
        }
    }
    
};
console.log(twoSum([2, 7, 11, 15],17))

上面的方法,值适合两两相邻的数值相加,万一不相连呢,就需要遍历循环了

var twoSum = function(nums, target) {
    var len = nums.length-1;
    for(var i=0;i<len;i++){
        for(var j =1;j<len-1;j++){
        if(nums[i] + nums[j] == target){
            return [i,j]
        }
        }
    }
    
};
console.log(twoSum([2, 7, 11, 15],17))

给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。

var shortestToChar = function (S, C) {
  var arr = S.split('');
  var arrC = [];
  var arrS = [];
  console.log(arr)
  for (var i = 0; i <= arr.length - 1; i++) {
    if (arr[i] == C) arrC.push(i)
  }
  console.log(arrC)

  for (var i = 0; i < arr.length; i++) {
    var m = [];
    for (var j = 0; j < arrC.length; j++) {
      //console.log(i, arrC[j], i - arrC[j])
      m.push(Math.abs(i - arrC[j]))
    }
    arrS.push(Math.min(...m))
    //arrS.push(Math.min.apply(m))
  }
  return arrS;
};
console.log(shortestToChar('loveleetcode', 'e')) //[ 3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0 ]

TIPS:上面的这种写法注意Math.min.apply(),不要直接到node环境下测试,否则会输出如下的,浪费我不少时间反复查问题o(╯□╰)o

算法系列1

 

相关标签: 算法 前端算法