天天看點

Java算法之兩數之和雙指針法

167

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int [] nums = new int[2];
        int j = 0;
        int i;
        for(i = 0;i<numbers.length;i++){
            int tmp = numbers[i];
            j= 1+i;
            while(j<numbers.length){
                if(tmp+numbers[j] == target){
                    nums[0] = i+1;
                    nums[1] = j+1;
                    return nums;
                }
                j++;
            }
        }
                                            
        return nums;
    }
}
           
Java算法之兩數之和雙指針法
class Solution {
    public int[] twoSum(int[] numbers, int target) {
       int head = 0;
       int tail = numbers.length-1;
       int[] nums = new int[2];
       int sum = 0;
       while(head<tail){
           sum = numbers[head]+numbers[tail];
           if(sum>target){
               tail--;
           }else if(sum<target){
               head++;
           }else{
               nums[0] = head+1;
               nums[1] = tail+1;
               return nums;
           }
       }
       return nums;
    }
}
           
Java算法之兩數之和雙指針法