活跃农民
- 积分
- 347
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-5-18
- 最后登录
- 1970-1-1
|
先求code能compile吧...
else if(numbers[j]>target-numbers){ <--
if(numbers[j]==target-numbers){ <--
两个for loop 可以直接枚举所有i, j就好了 但这就浪费sorted array
我还是觉得你先理解为何题解为何是O(N) 以及O(N)解只有比较数字的时候可以更新i, j
- class Solution {
- public int[] twoSum(int[] nums, int target) {
- int i = 0, j = nums.length - 1;
- while (i < j) {
- int sum = nums[i] + nums[j];
- if (sum == target) {
- return new int[] {i + 1, j + 1};
- } else if (sum > target) {
- j--;
- } else {
- i++;
- }
- }
- return new int[] {-1, -1};
- }
- }
复制代码
|
|