leetcode 167 Two Sum II - Input array is sorted 详细解答
在这做个题之前,建议先看看 leetcode 1。做一下对比。
这里不同的是,输入的数组是排序好了的。但都可以用 leetcode 1的方法来做。
解法1
Brute Force
直接用双重for循环暴力**
代码如下:
时间复杂度:O(N2),空间复杂度:O(1)
这种解法在这里就会超时
解法2
跟 leetcode 1一样,借用字典来求解
代码如下:
时间复杂度:O(N),空间复杂度:O(N)
解法3
上述两种解法都是一种思路,但是其没有利用到排序这个特征。
那么在这里就可以利用双指针 i, j
初始化时,i 指向数组第一个元素,j 指向数组最后一个元素。
如果 nums[i] + nums[j] < target, 让 i 向右移动
如果 nums[i] + nums[j] > target, 让 j 向左移动
如果 nums[i] + nums[j] == target, 返回
代码如下:
时间复杂度:O(N),空间复杂度:O(1)