web前端经典面试题让前端飞Web前端之路

leetcode第一题: 两数之和

2019-10-08  本文已影响0人  全栈弄潮儿
  1. Two Sum(两数之和)

题目描述

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

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

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解析

let twoSum = function(nums, target) {
    let current = null;
    for(let i = 0; i < nums.length; i ++){
         current = nums.indexOf(target - nums[i]) 
        // If the index of the number we are looking for is not -1, meaning it exists
        // AND the current index is not the same as ourself, return the ith index and the index of the desired other index.
        if(current != -1  && (current != i)) {
            return [i,current]
        }
    }
};
let nums = [2, 7, 11, 15];
twoSum(nums, 9);  // [0, 1]

扩展题目

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

例如:

let nums = [1, 2, 4, 5, 6, 8, 9];
twoSum(nums, 7);
return [{firstIndex: 0, anotherIndex: 4}, {firstIndex: 1, anotherIndex: 3}]

解析:

let twoSum = function(nums, target) {
    let current = null;
    let result = [];
    nums.sort();
    for (let i = 0; i < nums.length/2 - 1; i++) {
        current = nums.indexOf(target - nums[i]);
        if (current != -1 && (current != i)) {
            let item = {firstIndex: i, anotherIndex: current};
            result.push(item);          
        }
    }
    return result;
};
let nums = [1, 2, 4, 5, 6, 8, 9];
twoSum(nums, 7); //[{firstIndex: 0, anotherIndex: 4}, {firstIndex: 1, anotherIndex: 3}]

经典前端面试题每日更新,欢迎参与讨论,地址:https://github.com/daily-interview/fe-interview


更多angular1/2/4/5、ionic1/2/3、react、vue、微信小程序、nodejs等技术文章、视频教程和开源项目,请关注微信公众号——全栈弄潮儿

微信公众号
上一篇下一篇

猜你喜欢

热点阅读