问题:给定一个递增顺序的整数数组,返回一个数组,其中包含两个数字的位置(索引+1),这两个数字相加为特定的目标数字
Sol:当我编写代码而不使用 else-if 来检查第二个条件时,我会得到想要的结果:
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left=0;
int right=numbers.length-1;
int arr[]=new int[2];
while(left<right)
{
if(numbers[left]+numbers[right]==target)
{
arr[0]=left+1;
arr[1]=right+1;
}
if(numbers[left]+numbers[right]<target)
{
left++;
}
else
right--;
}
return arr;
}
}
但是当我使用 else-if 而不是 "if" 来检查第二个条件时,就会超出时间限制。谁能解释这背后的原因:
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left=0;
int right=numbers.length-1;
int arr[]=new int[2];
while(left<right)
{
if(numbers[left]+numbers[right]==target)
{
arr[0]=left+1;
arr[1]=right+1;
}
else if(numbers[left]+numbers[right]<target) // using else if
{
left++;
}
else
right--;
}
return arr;
} }