力扣中167 两数之和2

 

 

//最开始直接把最后一个if else暴露在外面 导致每次都head++出错 不用写最后一种是指每次都得执行的部分,别搞错 或者是其他if中直接return过了 执行到这句就是唯一情况 
例如
    if(a==0){
        return 0;
    }
    else if (a==2){
        return 1;
    }
    return 3;    
 
package Leetcode;

public class Leetcode167 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] numbers= {2,7,11,15};
        for (int i:Leetcode167.twoSum(numbers, 9)) {
            System.out.println(i);
        }
    }
    public static int[] twoSum(int[] numbers, int target) {
        int head=0;
        int tail=numbers.length-1;
        while(head<tail) {
            if(numbers[tail]>target-numbers[head]) {
                tail--;
            }
            else if(numbers[tail]==target-numbers[head]) {
                int[] res = {head+1,tail+1};
                return res;
            }
            else if(numbers[tail]<target-numbers[head]) {
//最开始直接把这个暴露在外面 导致每次都head++出错

                head++;
            }
        }
        
        return numbers;
    }
}

 

 

还有一种题解 固定一个数 二分查找另一个 没必要

posted @ 2023-03-01 09:58  Ssshiny  阅读(17)  评论(0)    收藏  举报