力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
思路一:新开辟一个数组,空间复杂度O(N)
因为本题要求是空间复杂度O(1),所以这里只是列出思路1的思路和配图,并没有具体的实现代码,想必这对大家一定很简单。
思路二:使用快慢指针,空间复杂度O(1),在数组中就用下标表示。
如果dest所指向的内容不是val,就将arr[fast]的内容赋值到arr[slow]中,slow++,fast++。否则只是fast++。
int removeElement(int* nums, int numsSize, int val) {
int slow = 0;
int fast = 0;
while(fast < numsSize)
{
if(nums[fast] != val)
{
nums[slow++] = nums[fast];
}
fast++;
}
return slow;
}