今天在力扣做题遇到了一个for循环中定义了两个变量的问题,弄清楚后决定写个文章加深一下印象。
在下列循环中定义了两个变量,且省去了第三个表达式,即再此循环中i永远都是1,j永远都是numbers.length-1,不会自增或自减。i、j的最终值是通过if语句中的i++和J--来决定的。
代码:
public int[] twoSum(int[] numbers, int target) {
//在数组numbers[]中找到两个数,其和为目标数target,并返回这两个数的索引(即numbers[]中的第几个数)。
//双指针法
for(int i=0,j=numbers.length-1;i<j;){
int n=numbers[i]+numbers[j];
if(n==target){ //target为目标数
return new int[] {i+1,j+1};
}else if(n<target){
i++;
}else{
j--;
}
}
return null;
}