【JAVA】力扣-167-两数之和 II

一、问题

两数之和 II
在这里插入图片描述

二、解题思路

数组有序,可以采用双指针技巧,通过调节 left 和 right 就可以调整 sum 的大小,从而求解。

三、解题代码

int[] twoSum(int[] nums, int target) {
    
    
    // 一左一右两个指针相向而行
    int left = 0, right = nums.length - 1;
    while (left < right) {
    
    
        int sum = nums[left] + nums[right];
        if (sum == target) {
    
    
            // 题目要求的索引是从 1 开始的
            return new int[]{
    
    left + 1, right + 1};
        } else if (sum < target) {
    
    
            left++; // 让 sum 大一点
        } else if (sum > target) {
    
    
            right--; // 让 sum 小一点
        }
    }
    return new int[]{
    
    -1, -1};
}

猜你喜欢

转载自blog.csdn.net/qq_35156196/article/details/127125497
今日推荐