题解 | #草原牛群集合#

草原牛群集合

https://www.nowcoder.com/practice/6fc74519ff9c44288dbcec5db7345ded

知识点:

双指针/数组/原地

分析:

不额外增加数组,在原数组的基础上进行删除

可以考虑使用双指针方法 

首先使用两个指针指向数组的首元素,这里要清楚两个指针分别的作用是什么,i指针的作用是用来判断是否要进行元素删除,我们称为主指针,那么j指针,j指针就是辅助i指针完成移除操作的指针。

在i指针进行遍历,从首元素遍历至尾元素,如果i指针指向的元素不是要删除的元素,那么将i指针指向的值赋给j指针,并让j指针往后移动一个,然后i指针也往后移动一个。

当整个数组遍历结束,j指针指向的位置就是新数组的结尾,故返回它就是整个数组的长度

编程语言:

C++

完整代码:

    int remove_cows(vector<int>& nums, int val) {
        int i = 0,j = 0;
        while(i < nums.size()){
            if(nums[i] != val){
                nums[j++] = nums[i];
            }
            i++;
        }
        return j
    }

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务