leetcode 27 :移除元素
题目描述
算法思想 :我们定义两个指针i,j,i表示从前扫描nums[i] == val的值,j从后扫描,如果nums[j] == val,则数组元素个数减少,j继续向前扫描,否则nums[j] != val,则把nums[i] = nums[j],表示把数组后面的不等于val的元素替换到前面去,因为题目不要求按照原来的顺序,最终i == j则终止.
int removeElement(vector<int>& nums, int val) {
int i = 0,j = nums.size()-1;
int length = nums.size();
if(length == 0)
return 0;
for(i = 0;i < nums.size();i++)
{
if(nums[i] == val)
{
while(nums[j] == val)
{
if(i == j)
break;
j--;
length--;
}
if(i != j)
{
nums[i] = nums[j];
j--;
length--;
}
else
{
length--;
break;
}
}
if(i == j)
break;
}
return length;
}