给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

class Solution {
public:
int removeElement(vector<int>& nums, int val)
{
for(int i=0;i<nums.size();i++)
{
if(nums[i]==val)
{
nums.erase(nums.begin()+i);
i--;
}
}
return nums.size();
}
};

同样是利用了STL中的vector中的erase函数,erase函数的用法有两种,

iterator erase (iterator position);  //删除指定元素

iterator erase (iterator first, iterator last);  //删除指定范围内的元素

返回值是删除后的下一个元素的迭代器。

我们这里使用的是第一种用法,删除指定的元素,因为参数是迭代器,所以就使用了erase(nums.begin()+i)表示删除第i个元素。同样erase之后会影响到整个vector的长度。

最新文章

  1. MVVM小记
  2. Java 权限修饰符
  3. 安装apache mysql 论坛(一)
  4. WPF:在XmlDataProvider上使用主-从绑定(Master-Detail Binding)
  5. C++中vector的实现
  6. e.target 和 e.srcElement 的使用问题
  7. java程序的工作原理
  8. Klass与Oop
  9. 【学习笔记】Hibernate HQL连接查询和数据批处理 (Y2-1-7)
  10. js中的typeof和instanceof和===
  11. 数据库~dotnetcore连接Mysql插入中文失败
  12. .net 程序 动态 控制IIS 站点域名绑定
  13. 【EF6学习笔记】(八)更新关联数据
  14. CentOS7装Tomcat
  15. LeetCode(115):不同的子序列
  16. Django连接Oracle数据库配置
  17. U3D开发中关于脚本方面的限制-有关IOS反射和JIT的支持问题
  18. Python基础笔记(二)
  19. Redis的Pub/Sub机制存在的问题以及解决方案
  20. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

热门文章

  1. C++:I/O流的概念和流类库的结构
  2. 简易双色球dome分享
  3. .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
  4. 前置时间(Lead Time),也称前置期、备货周期
  5. go mod 以及vscode解决被墙的插件问题
  6. redis6.0多线程
  7. 设计模式c++(2)——策略模式
  8. Spring5源码,@Autowired
  9. hadoop知识点总结(一)hadoop架构以及mapreduce工作机制
  10. Kubernetes --(k8s) service