[LeetCode]167. 两数之和 II - 输入有序数组(java实现)双指针
1. 题目
2. 读题(需要重点注意的东西)
思路(双指针):
要求: 使用常量级的额外空间O(1)
枚举指针 i 的时候,从 i + 1 开始枚举指针 j ,并且要满足nums[i] + nums[j] <= target
,若 nums[i] + nums[j] == target
则返回 (i,j) 即可
3. 解法
---------------------------------------------------解法---------------------------------------------------
class Solution {
public int[] twoSum(int[] numbers, int target) {
for(int i = 0;i < numbers.length;i++){
for(int j = i + 1;j < numbers.length;j++){
if(numbers[i] + numbers[j] == target) return new int[]{i+1,j+1};
else if(numbers[i] + numbers[j] < target) continue;
else break;
}
}
return new int[]{};
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
6. 总结
需要空间就要用时间来换;
需要时间就要用空间来换。