Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
leetcode
提交
91453277
L
leetcode
项目概览
爱吃血肠
/
leetcode
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
leetcode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
91453277
编写于
3月 24, 2019
作者:
L
luzhipeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
two sum ii
上级
6173f6e9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
101 addition
and
0 deletion
+101
-0
167.two-sum-ii-input-array-is-sorted.md
167.two-sum-ii-input-array-is-sorted.md
+101
-0
未找到文件。
167.two-sum-ii-input-array-is-sorted.md
0 → 100644
浏览文件 @
91453277
## 题目地址
https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/
## 题目描述
这是leetcode头号题目
`two sum`
的第二个版本,难度简单。
```
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
Note:
Your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution and you may not use the same element twice.
Example:
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
```
## 思路
由于题目没有对空间复杂度有求,用一个hashmap 存储已经访问过的数字即可。
假如题目空间复杂度有要求,由于数组是有序的,只需要双指针即可。一个left指针,一个right指针,
如果left + right 值 大于target 则 right左移动, 否则left右移,代码比较简单, 不贴了。
> 如果数组无序,需要先排序(从这里也可以看出排序是多么重要的操作)
## 关键点解析
无
## 代码
```
js
/*
* @lc app=leetcode id=167 lang=javascript
*
* [167] Two Sum II - Input array is sorted
*
* https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/
*
* algorithms
* Easy (49.46%)
* Total Accepted: 221.8K
* Total Submissions: 447K
* Testcase Example: '[2,7,11,15]\n9'
*
* Given an array of integers that is already sorted in ascending order, find
* two numbers such that they add up to a specific target number.
*
* The function twoSum should return indices of the two numbers such that they
* add up to the target, where index1 must be less than index2.
*
* Note:
*
*
* Your returned answers (both index1 and index2) are not zero-based.
* You may assume that each input would have exactly one solution and you may
* not use the same element twice.
*
*
* Example:
*
*
* Input: numbers = [2,7,11,15], target = 9
* Output: [1,2]
* Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
*
*/
/**
* @param {number[]} numbers
* @param {number} target
* @return {number[]}
*/
var
twoSum
=
function
(
numbers
,
target
)
{
const
visited
=
{}
// 记录出现的数字, 空间复杂度N
for
(
let
index
=
0
;
index
<
numbers
.
length
;
index
++
)
{
const
element
=
numbers
[
index
];
if
(
visited
[
target
-
element
])
{
return
[
visited
[
target
-
element
],
index
+
1
]
}
visited
[
element
]
=
index
+
1
;
}
return
[];
};
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录