首页 > 代码库 > Remove Element
Remove Element
思路:直接使用index记录新vector的下标即可,不过还是应该注意便捷条件的处理
class Solution { public: int removeElement(vector<int>& nums, int val) { if(nums.size() == 0) return 0; int index = 0; for(int i=0; i<nums.size(); ++i) { if(nums[i] != val) nums[index++] = nums[i]; } return index; } };
这个问题也可以使用stl中distance和remove两个函数实现,这里需要注意remove函数不是直接删除vector中的元素,而是用后面的元素替代前面的元素,所以在这个问题中直接返回nums.size()是不对的,其值是不变的
class Solution { public: int removeElement(vector<int>& nums, int val) { return distance(nums.begin(), remove(nums.begin(), nums.end(), val)); } };
但是使用erase函数可以直接抹去vector中的元素,这也是两个函数的不同之处,可以看出remove函数返回的是最后一个值的迭代器
class Solution { public: int removeElement(vector<int>& nums, int val) { nums.erase(remove(nums.begin(), nums.end(), val), nums.end()); return nums.size(); } };
Remove Element
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。