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

题目要求

 

 

算法分析

可以用双指针法,

分别指向头尾元素,如果两元素的和大于目标,尾指针前移,如果小于目标,头指针后移,等于目标即可得答案

代码展示(C#)

public class Solution {
    public int[] TwoSum(int[] numbers, int target) {
        if(numbers.Length == 0){return null;}
        int[] ret = new int[2];
        int p1 = 0,p2 = numbers.Length - 1;
        while(p1 < p2){
            int temp = numbers[p1] + numbers[p2];
            if(temp == target){
                ret = new int[2]{p1+1,p2+1};
                break;
            }
            else if(temp < target){
                p1++;
            }
            else if(temp > target){
                p2--;
            }
        }
        return ret;
    }
}

 

提交结果

 

posted on 2020-07-20 07:57  King__R  阅读(122)  评论(0编辑  收藏  举报