2020.7.20 力扣每日

 1 class Solution {
 2     public int[] twoSum(int[] numbers, int target) {
 3         int len = numbers.length;
 4         int left = 0, right = len - 1;
 5         int[] res = new int[]{-1,-1};
 6         while (left < right){
 7             if (numbers[left] + numbers[right] == target){
 8                 res = new int[]{left+1,right+1};
 9                 break;
10             }
11             else if (numbers[left] + numbers[right] > target)
12                     right--;
13             else left++;
14         }
15         return res;
16     }
17 }

解题思路:

   利用双指针,指向头与尾,比较两值之和与target,若大于,则right--,因为是升序数组,right所指数将减小,两数之和将减小;反之小于则left++。直到left==right,循环结束

注意点:

   若不存在,则需返回[-1,-1]

空间复杂度:O(1)

时间复杂度:O(N),N为数组长度

posted @ 2020-07-20 22:21  小小码农-安  阅读(166)  评论(0编辑  收藏  举报