Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
LeetCodeAnimation
Commits
f43c0860
Unverified
Commit
f43c0860
authored
Jul 31, 2020
by
程序员吴师兄
Committed by
GitHub
Jul 31, 2020
Browse files
Merge pull request #109 from ztianming/patch-3
Update 0167-Two-Sum-II-Input-array-is-sorted.md
parents
20bb4de8
a86c0a02
Changes
1
Hide whitespace changes
Inline
Side-by-side
0167-Two-Sum-II-Input-array-is-sorted/Article/0167-Two-Sum-II-Input-array-is-sorted.md
View file @
f43c0860
...
...
@@ -40,29 +40,80 @@

### 代码实现
```
#### 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
]
```
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment