Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
LeetCodeAnimation
提交
f43c0860
L
LeetCodeAnimation
项目概览
wushizhenking
/
LeetCodeAnimation
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
LeetCodeAnimation
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
f43c0860
编写于
7月 31, 2020
作者:
程
程序员吴师兄
提交者:
GitHub
7月 31, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #109 from ztianming/patch-3
Update 0167-Two-Sum-II-Input-array-is-sorted.md
上级
20bb4de8
a86c0a02
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
64 addition
and
13 deletion
+64
-13
0167-Two-Sum-II-Input-array-is-sorted/Article/0167-Two-Sum-II-Input-array-is-sorted.md
...s-sorted/Article/0167-Two-Sum-II-Input-array-is-sorted.md
+64
-13
未找到文件。
0167-Two-Sum-II-Input-array-is-sorted/Article/0167-Two-Sum-II-Input-array-is-sorted.md
浏览文件 @
f43c0860
...
...
@@ -40,29 +40,80 @@
![](
../Animation/Animation.gif
)
### 代码实现
```
#### C++
```
c++
// 对撞指针
// 时间复杂度: O(n)
// 空间复杂度: O(1)
class
Solution
{
public:
vector
<
int
>
twoSum
(
vector
<
int
>&
numbers
,
int
target
)
{
int l = 0, r = numbers.size() - 1;
while(l < r){
if(numbers[l] + numbers[r] == target){
int res[2] = {l+1, r+1};
return vector<int>(res, res+2);
int
n
=
numbers
.
size
();
int
left
=
0
;
int
right
=
n
-
1
;
while
(
left
<=
right
)
{
if
(
numbers
[
left
]
+
numbers
[
right
]
==
target
)
{
return
{
left
+
1
,
right
+
1
};
}
else
if
(
numbers
[
left
]
+
numbers
[
right
]
>
target
)
{
right
--
;
}
else
{
left
++
;
}
else if(numbers[l] + numbers[r] < target)
l ++;
else // numbers[l] + numbers[r] > target
r --;
}
return
{
-
1
,
-
1
};
}
};
```
#### Java
```
java
class
Solution
{
public
int
[]
twoSum
(
int
[]
numbers
,
int
target
)
{
int
n
=
numbers
.
length
;
int
left
=
0
;
int
right
=
n
-
1
;
while
(
left
<=
right
)
{
if
(
numbers
[
left
]
+
numbers
[
right
]
==
target
)
{
return
new
int
[]{
left
+
1
,
right
+
1
};
}
else
if
(
numbers
[
left
]
+
numbers
[
right
]
>
target
)
{
right
--;
}
else
{
left
++;
}
}
return
new
int
[]{-
1
,
-
1
};
}
}
```
#### Python
```
python
class
Solution
(
object
):
def
twoSum
(
self
,
numbers
,
target
):
n
=
len
(
numbers
)
left
,
right
=
0
,
n
-
1
while
left
<=
right
:
if
numbers
[
left
]
+
numbers
[
right
]
==
target
:
return
[
left
+
1
,
right
+
1
]
elif
numbers
[
left
]
+
numbers
[
right
]
>
target
:
right
-=
1
else
:
left
+=
1
return
[
-
1
,
-
1
]
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录