Unverified Commit f43c0860 authored by 程序员吴师兄's avatar 程序员吴师兄 Committed by GitHub
Browse files

Merge pull request #109 from ztianming/patch-3

Update 0167-Two-Sum-II-Input-array-is-sorted.md
parents 20bb4de8 a86c0a02
...@@ -40,29 +40,80 @@ ...@@ -40,29 +40,80 @@
![](../Animation/Animation.gif) ![](../Animation/Animation.gif)
### 代码实现 ### 代码实现
#### C++
``` ```c++
// 对撞指针 // 对撞指针
// 时间复杂度: O(n) // 时间复杂度: O(n)
// 空间复杂度: O(1) // 空间复杂度: O(1)
class Solution { class Solution {
public: public:
vector<int> twoSum(vector<int>& numbers, int target) { vector<int> twoSum(vector<int>& numbers, int target) {
int l = 0, r = numbers.size() - 1; int n = numbers.size();
while(l < r){ int left = 0;
if(numbers[l] + numbers[r] == target){ int right = n-1;
int res[2] = {l+1, r+1}; while(left <= right)
return vector<int>(res, res+2); {
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]
```
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment