力扣中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; } }
还有一种题解 固定一个数 二分查找另一个 没必要

浙公网安备 33010602011771号