leetcode系列--1.两数之和
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.两数之和相关推荐
- leetcode系列--18.四数之和
leetcode系列–18.四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], ...
- LeetCode题 - 1 两数之和
LeetCode题 - 1 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案. ...
- LeetCode:1.两数之和
LeetCode:1.两数之和 第一次写题解,也第一次做leetcode,不妥之处还望海涵 一.暴力 //cpp class Solution {public:vector<int> tw ...
- [Leetcode]Two sum(两数之和)系列总结
Two sum 题目 Given an array of integers, return indices of the two numbers such that they add up to a ...
- 【Leetcode | easy】两数之和
题目 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], targ ...
- LeetCode刷题-两数之和(持续更新)
文章目录 LeetCode 1. Two Sum (两数之和) 题目描述 样例 解题思路一(暴力法) 解题思路二(使用map) 前言:最近业余时间,一直在看LeetCode上面的题,上面有许多好的解题 ...
- Leetcode 1:两数之和
写在前面 Leetcode 社区挺神奇的,近几年火热程度不亚于开源社区github.做题一直以来是咱们亚洲人的强项,咋这香馍馍也被美国硅谷抢先了,着实香菇. 企于算法工程师的江湖地位和薪资福利,决定先 ...
- LeetCode 01【两数之和】【LeetCode人生第一题!】
刷题官网:https://leetcode-cn.com/ 目 录 题目 官方题解 方法一:暴力法 方法二:两遍哈希表 方法三:一遍哈希表 初次提交 题目 官方题解 方法一:暴力法 暴力法很简单, ...
- 【LeetCode】1.两数之和
1.两数之和 一.问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
最新文章
- 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储
- ReferenceQueue的使用
- 6.5 scp:远程文件复制
- js 获取某iframe中document,浏览器兼容
- python 时间模块 -- time
- Web编程学习一: 使用JSF来创建Web应用
- wap2.0技巧篇(转)
- linux的QQ安装在哪个文件夹,linux安装QQ
- 无线网络 EAP 认证
- 《和沐阳一起学POST+JS逆向》视频教程
- Js逆向教程19-websocket介绍
- 秃顶程序员跑马拉松历程
- 基于C/C++的hex、s19文件相互转换
- vue组件走马灯_vue文字横向滚动走马灯公告代码示例
- 菜刀 mysql_chopper菜刀一句话操作mysql数据库乱码问题脚本安全 -电脑资料
- 利用模板方法设计模式实现代码的利用的工程实践
- 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》
- echats设置辅助线
- 漂亮实用的万年历带中文节日农历
- 一文读懂马云、马化腾、李彦宏、库克等互联网大佬们都在乌镇干了啥