leetcode 第1题 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。

举例:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

// 暴力解法
var twoSum = function (nums, target) {for (let i = 0; i < nums.length; i ++) {for (let j = i + 1; j < nums.length; j ++) {if (nums[i] + nums[j] === target) {return [i, j]}}}
};Ï

这种算法对于需要返回索引的场景非常有效。

// 空间换时间
// 时间复杂度 O(n)
// 空间复杂度 O(n)
// 我们可以通过一个辅助的哈希表来降低时间复杂度,对数组进行遍历,遍历每一项的时候都判断target-nums[i]在之前的遍历中是否遇到过,如果遇到过,则返回,如果不是,则将其放入哈希表中,继续遍历。
// 哈希表
var twoSum = function (nums, target) {let map = new Map()for (let i = 0; i < nums.length; i++) {const diff = target - nums[i];if (map.has(diff)) {return [map.get(diff), i]}map.set(nums[i], i)}
}
// 排序+双指针
//( 该思路的问题在于 没有办法确认排序以后的数之前对应的位置 例如两个相同的数,有时间我一定会去想
// 明白虽然这个方法可能是很笨的,但我觉得这个思路是可取的,只是我遇到了瓶颈 )var twoSum = function (nums, target) {let copyNums = JSON.parse(JSON.stringify(nums))nums.sort((a, b) => a - b)let left = 0,right = nums.length - 1;while (left <= right) {if (nums[left] + nums[right] === target) {return [copyNums.indexOf(nums[left]), copyNums.indexOf(nums[right])]} else if (nums[left] + nums[right] > target) {right--;} else {left++}}
};

leetcode系列--1.两数之和相关推荐

  1. leetcode系列--18.四数之和

    leetcode系列–18.四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], ...

  2. LeetCode题 - 1 两数之和

    LeetCode题 - 1 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案. ...

  3. LeetCode:1.两数之和

    LeetCode:1.两数之和 第一次写题解,也第一次做leetcode,不妥之处还望海涵 一.暴力 //cpp class Solution {public:vector<int> tw ...

  4. [Leetcode]Two sum(两数之和)系列总结

    Two sum 题目 Given an array of integers, return indices of the two numbers such that they add up to a ...

  5. 【Leetcode | easy】两数之和

    题目 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], targ ...

  6. LeetCode刷题-两数之和(持续更新)

    文章目录 LeetCode 1. Two Sum (两数之和) 题目描述 样例 解题思路一(暴力法) 解题思路二(使用map) 前言:最近业余时间,一直在看LeetCode上面的题,上面有许多好的解题 ...

  7. Leetcode 1:两数之和

    写在前面 Leetcode 社区挺神奇的,近几年火热程度不亚于开源社区github.做题一直以来是咱们亚洲人的强项,咋这香馍馍也被美国硅谷抢先了,着实香菇. 企于算法工程师的江湖地位和薪资福利,决定先 ...

  8. LeetCode 01【两数之和】【LeetCode人生第一题!】

    刷题官网:https://leetcode-cn.com/ 目   录 题目 官方题解 方法一:暴力法 方法二:两遍哈希表 方法三:一遍哈希表 初次提交 题目 官方题解 方法一:暴力法 暴力法很简单, ...

  9. 【LeetCode】1.两数之和

    1.两数之和 一.问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

最新文章

  1. 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储
  2. ReferenceQueue的使用
  3. 6.5 scp:远程文件复制
  4. js 获取某iframe中document,浏览器兼容
  5. python 时间模块 -- time
  6. Web编程学习一: 使用JSF来创建Web应用
  7. wap2.0技巧篇(转)
  8. linux的QQ安装在哪个文件夹,linux安装QQ
  9. 无线网络 EAP 认证
  10. 《和沐阳一起学POST+JS逆向》视频教程
  11. Js逆向教程19-websocket介绍
  12. 秃顶程序员跑马拉松历程
  13. 基于C/C++的hex、s19文件相互转换
  14. vue组件走马灯_vue文字横向滚动走马灯公告代码示例
  15. 菜刀 mysql_chopper菜刀一句话操作mysql数据库乱码问题脚本安全 -电脑资料
  16. 利用模板方法设计模式实现代码的利用的工程实践
  17. 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》
  18. echats设置辅助线
  19. 漂亮实用的万年历带中文节日农历
  20. 一文读懂马云、马化腾、李彦宏、库克等互联网大佬们都在乌镇干了啥

热门文章

  1. C语言笔记 | 一元一次方程
  2. 新媒体运营矩阵怎么做
  3. 第52章 房地产投资面面观
  4. 登神长阶 c语言题解
  5. Mac 安装docker并设置国内镜像源(Docker Desktop 4.0.0)
  6. bootstrap Datatable自定义表格工具栏
  7. jQuery 表格工具集
  8. lasso特征选择python_[机器学习] 特征选择简明指南
  9. 高清无线手机投屏电脑软件Airserver7全平台兼容
  10. linux系统不支持mysql,提示不支持mysql的解决方法