Two Sum II - Input array is sorted

public class Solution {
    /**
     * @param nums: an array of Integer
     * @param target: target = nums[index1] + nums[index2]
     * @return: [index1 + 1, index2 + 1] (index1 < index2)
     */
    public int[] twoSum(int[] nums, int target) {
        // write your code here
        if (nums == null || nums.length < 2) {
            return new int[0];
        }
        
        for (int l = 0, r = nums.length - 1; l < r; r--) {
            while (l < r && nums[l] + nums[r] < target) {
                l++;
            }
            
            if (l != r && nums[l] + nums[r] == target) {
                return new int[] {l + 1, r + 1};
            }
        }
        return new int[0];
    }
}

最后更新于

这有帮助吗?