两数之和
Category
Difficulty
Likes
Dislikes
algorithms
Easy (52.51%)
14454
-
Tags
array | hash-table
Companies
adobe | airbnb | amazon | apple | bloomberg | dropbox | facebook | linkedin | microsoft | uber | yahoo | yelp
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6 输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6 输出:[0,1]
提示:
- 2 <= nums.length <= 104
- -109 <= nums[i] <= 109
- -109 <= target <= 109
- 只会存在一个有效答案
进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?
通知:第六期刷题打卡挑战 点击这里报名,数据结构精品课 V1.0 上线,详情见这里。
Discussion | Solution
代码实现
/** @lc app=leetcode.cn id=1 lang=javascript** [1] 两数之和*/// @lc code=start/*** @param {number[]} nums* @param {number} target* @return {number[]}*/var twoSum = function (nums, target) { // 数组长度范围判断 // 数字在范围内 // 目标数字在范围内 // for in loop nums // for in loop nums // 对比 和为target return // console.log(nums, Math.pow(10, 4), -Math.pow(10, 4),typeof -Math.pow(10, 4)); if ( nums.length <= Math.pow(10, 4) && nums.length >= 2 && target <= Math.pow(10, 9) && target >= -Math.pow(10, 9) ) { console.log(nums, target); for (let i = 0; i < nums.length; i++) { const element_i = nums[i]; console.log(element_i); if (element_i <= Math.pow(10, 9) && element_i >= -Math.pow(10, 9)) { for (let j = 0; j < nums.length; j++) { let element_j; if (i !== j) { element_j = nums[j]; if (element_j <= Math.pow(10, 9) && element_j >= -Math.pow(10, 9)) { const sum = element_i + element_j; if (sum === target) { return [i, j]; break; } } } } } } }};// const res1 = twoSum([2, 7, 11, 15], 9);// const res2 = twoSum([3, 2, 4], 6);// const res3 = twoSum([3, 3], 6);// console.log(res1, res2, res3);// @lc code=end
提交记录
57 / 57 个通过测试用例
状态:通过
提交时间:28 分钟前
执行用时: 272 ms
内存消耗: 50.1 MB