赞
踩
小伙伴们大家好,今天为大家带来的是力扣上的比较简单的,有关顺序表的题。
首先是第二十七题,移除元素。
那么首先我们对题目进行分析,如下图所示:
这里是说需要我们原地移除数组中等于 val 的数,也就是说我们不能创建新的数组,因为空间复杂度为 O(1)。然后说元素的顺序可以改变,然后不需要考虑数组中超出新长度后面的元素,也就是说我们只需要,将不等于 val 的值覆盖到前面等于 val 的数的位置上面即可。
这种做法也是在顺序表中我们删除元素的一种比较常用的方法。
好的,那么我们对于本题的思路其实是相对来说比较简单的。
首先我们需要一个循环去遍历该数组,然后需要一个指针在原数组上存储不等于 val 的元素。
如下图所示:
我们需要 des 来记录不等于 val 的值的元素。然后在每次循环遍历的时候,如果当前 i 位置的元素不等于 val ,那么就将该元素赋值给 des 位置,然后 des 后移一位;如果等于 val ,那么 des 的位置不动,i 继续移动。直到遍历完所有元素,最后得到的便是 des 为下标的数组。
力扣代码如下:
- int removeElement(int* nums, int numsSize, int val){
- int i=0;
- int des=0;
- for(i=0;i<numsSize;i++)
- {
- if(nums[i] != val)
- {
- nums[des]=nums[i];
- des++;
- }
- }
- return des;
- }
好的,那么本文到此就结束啦,如有错误,还请指正哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。