zoukankan      html  css  js  c++  java
  • 167

    解法1,利用二分查找,对第一个i,去剩下的有序数组中查找target-numbers[i]

    class Solution {
        public int[] twoSum(int[] numbers, int target) {
            int[] res=new int[2];
            for(int i=0;i<numbers.length;i++)
            {
                int find=binarySearch(numbers,i+1,numbers.length-1,target-numbers[i]);
                if(find!=-1)
                {
                    res[0]=i+1;
                    res[1]=find+1;
                }
            }
            return res;
        }
        public int binarySearch(int[] arr,int l,int r,int target)
        {
            if(l<=r)
            {
                 int mid=l+(r-l)/2;
                if(arr[mid]==target)
                    return mid;
                 else if(arr[mid]>target)
                     return binarySearch(arr,l,mid-1,target);
                else
                    return binarySearch(arr,mid+1,r,target);
            }
             else
                 return -1;
            
        }
    }

    //解法2,碰撞指针

    class Solution {
        public int[] twoSum(int[] numbers, int target) {
            int[] res=new int[2];
            int i=0,j=numbers.length-1;
            while(i<j)
            {
                if(numbers[i]+numbers[j]==target)
                {
                    res[0]=i+1;
                    res[1]=j+1;
                    break;
                }
                else if(numbers[i]+numbers[j]<target)
                    i++;
                else
                    j--;
            }
            return res;
        }
    }

  • 相关阅读:
    [网站运营]浅谈如何尽可能的避免cms网站被黑
    [CDN]阿里云(企业云解析DNS)让你的博客飞起来
    阿里新生的面试经,与老人分享的职业进阶攻略及规划
    高逼格!程序猿的表白也可以这么浪漫
    程序员表白专属技能,你还不快学起来
    序列上的一些文章
    序列上的一些文章
    最长不下降子序列
    最长不下降子序列
    luoguP2831 愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11252916.html
Copyright © 2011-2022 走看看