剑指 Offer 57. 和为s的两个数字


剑指 Offer 57. 和为s的两个数字

解题思路

有序数组直接无脑二分搜索,但本题并不能算标准的二分搜索,因为没用上mid,可以理解为双指针嘛

代码

class Solution {
    public int[] twoSum(int[] nums, int target) {
        if(nums.length==0){
            return new int[]{};
        }
        int n=nums.length;
        int left=0;
        int right=n-1;

        while(left<=right){
            //不可以自己加自己,所以left==right的时候就要跳出循环
            if(left==right){
                break;
            }
            int sum=nums[left]+nums[right];
            if(sum==target){
                return new int[]{nums[left],nums[right]};
            }else if(sum>target){
                right--;
            }else if(sum<target){
                left++;
            }

        }
        return new int[]{};
    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录