167. 两数之和 II - 输入有序数组

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。

说明:

返回的下标值(index1 和 index2)不是从零开始的。
你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例:

输入: numbers = [2, 7, 11, 15], target = 9
输出: [1,2]
解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

解法:暴力解决,优化方法都在下面

class Solution {
   public int[] twoSum(int[] numbers, int target) {
        if(numbers.length<2){
            return null;
        }
        int[] ret = new int[2];
        /*for(int i = 0;i<numbers.length;i++){
            int index1 = numbers[i];
            for(int j = i+1;j<numbers.length;j++){
                if (index1 + numbers[j] == target){
                    ret[0] = i;
                    ret[1] = j;
                }
            }

        }*/
        int lowIndex = 0;
        int highIndex = numbers.length-1;
        while (lowIndex<highIndex){
            if(numbers[lowIndex] + numbers[highIndex]>target){
                highIndex--;
            }else if(numbers[lowIndex] + numbers[highIndex]<target){
                lowIndex++;
            }else{
                ret[0] = lowIndex+1;
                ret[1] = highIndex+1;
                break;
            }
        }
        return ret;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 昨晚好不容易睡着,却忽然被一阵阵狗叫声吵醒!本来就因为这几天大姨妈造访,导致睡眠质量很差,好不容易睡着的,...
    紫色荼蘼阅读 1,072评论 0 0
  • 今天小弟接手一个五年的老项目的维护,工程目录惨不忍睹,架构无法直视,用的还是MRC,看着就蛋疼,为了免收MRC的繁...
    blink被沉默了阅读 1,495评论 0 0
  • 目前网上有很多实用的APP,有关于化妆的,有关于英语学习的,有关于娱乐的,有关于养花的,资源丰富。但是为什么还...
    人在江湖Violet阅读 1,079评论 0 0