今天被坑惨了,提交数10遍,我真愚蠢,答案给我,我都抄不对
举个 栗子 吧!
//请问你是否会觉得一下两种都是对的
1.
while(left<=right)
{
while(num[left]!=target && left<=right)//就这不一样
left++;
while(num[right]==target && left<=right)
right--;
if(left<=right)
num[right]=num[left];
}
2.
while(left<=right)
{
while(left<=right && num[left]!=target)
left++;
while(left<=right && num[right]==target)
right--;
if(left<=right)
num[right]=num[left];
}
哈哈哈哈,如果你觉得一样 ,哈哈哈哈,就会和我一样品尝到无限的死循环的快乐
如果数组只有一个元素,现在要么等于目标值target要么不等
呢就有趣了,要么left++,要么right--;
巧了如果你把判断条件num[left / right] != / == target放前,碰见它直接非法,都是非法访问!!!!!!!!!!!
我的心情:“草字头”
所以以后数组判断的问题,都把num[a]这种玩意放最后,如果判断条件只有这个,小心越界,很痛苦,很难发现