算法系列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
上一篇: 博客右下角添加二维码