1.循环结束条件
while(left < right)
当循环结束时left == right
while(left <= right)
当循环结束时,left > right
2.循环结束要达到的效果
if(nums[i] + nums[lower] + nums[higher] > 0)
{
int next = higher - 1;
while(lower < next)
{
//printf("[LINE:%d]next:%d!\n",__LINE__-3,next);
if(nums[next] != nums[higher])
{
higher = next;
break;
}
next--;
}
higher = next;
}
使用while语句要有一个目的:比如,这是一个右边的值向左边移动的情况,目的时要改变higher的值,当循环结束时,要把next的值赋给higher。如果没有higher = next这句,higher的值很可能就不变。造成死循环,超时。