元素置换问题使用双指针算法
i=j,且当前元素等于val时,返回i+1。
i=j,且当前元素不等于val时,返归i
这里面的错误处在while,嵌套在内层的循环执行完以后才会退出,也就是说可以当内层的while执行完以后,早就不符合外层while(l<r)的条件了。所以,应在内层while中也加上外层while的条件
数组为空、数组长度为0是两个完全不同的概念
数组长度为0:数组不为空,但数组的“值”为空。系统开辟了内存。
数组为空:系统不开辟内存
在C++中,数组是静态的,一旦定义,它的大小就是固定的。不能在运行时更改数组的大小。如果你想要一个可以动态改变大小的数据结构,你应该使用std::vector
。
当你想检查一个数组是否为空,或者它的长度是否为0,你可以使用std::vector
的empty()
方法或者size()
方法。
判断临界条件
if(nums.empty() || nums.size()==0)
return 0;
1.临界条件
2.while嵌套的条件
3.最后的判断条件