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

  • 相关阅读:
    Codeforces 1249 F. Maximum Weight Subset
    Codeforces 1249 E. By Elevator or Stairs?
    Codeforces 1249 D2. Too Many Segments (hard version)
    使用subline作为Stata外部编辑器,并实现代码高亮
    Getting a handle on
    Economics degrees
    The threat to world
    他山之石,calling by share——python中既不是传址也不是传值
    Python的几个爬虫代码整理(网易云、微信、淘宝、今日头条)
    一梦江湖费六年——QQ群聊天分析
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11252916.html
Copyright © 2020-2023  润新知