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;
        }
    }

  • 相关阅读:
    JAVA文件操作类和文件夹的操作代码示例
    java去除表达符号的正则表达式
    正则表达式以过滤特殊字符
    eclipse与myeclipse恢复已删除的文件和代码
    Windows 2003 Server R2 x64 IIS6.0 eWebEditor无法显示的问题
    获得每日,每周,每月的0点和24点的时间戳
    Access查询时间段 .
    java连接Access数据库的两种方法
    移动App专项测试
    linux性能评估-内存基础理解篇
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11252916.html
Copyright © 2011-2022 走看看