博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Remove Element 分析
阅读量:5159 次
发布时间:2019-06-13

本文共 1120 字,大约阅读时间需要 3 分钟。

Remove Element算是LeetCode的一道水题,不过这题也有多种做法,现就我所知的几种做一点讨论。

题目链接:https://leetcode.com/problems/remove-element/

题目描述:Given an array and a value, remove all instances of that value in place and return the new length.

The order of elements can be changed. It doesn't matter what you leave beyond the new length. 
要注意的是“It doesn't matter what you leave beyond the new length.”
思路分析:思路很简单,直接上代码。
Solution 1:暴力移动

1 class Solution { 2 public: 3     int removeElement(vector
& nums, int val){ 4 int len = nums.size(); 5 int ptr = 0; 6 int newLen = 0; 7 for(int i = 0;i

Solution 2:使用STL

1 class Solution {2 public:3     int removeElement(vector
& nums, int val) {4 auto end = remove(nums.begin(),nums.end(),val);//这里用到了自动指针5 return distance(nums.begin(),end);6 }7 };

 关于Solution 2中STL的使用:

1,remove算法描述:查找的得到第一个元素的位置,然后从此位置开始遍历容器,将后面的元素依次前移,跳过和value相同值的元素,也就是说,所有和value相同值的元素都会被覆盖,而其他的元素都会依次前移。最后remove返回"指向最后一个'有用'元素的iterator",但是在remove算法过程中,并没有修改原容器的size,以及end()

2,distance()用于求出迭代器之间的距离,即两个参数之间的元素个数。

转载于:https://www.cnblogs.com/allzy/p/5158810.html

你可能感兴趣的文章
jQuery 显示加载更多
查看>>
JSP和Servlet互相传输数据的过程中产生的乱码问题及解决方案(没有使用AJAX的情况)...
查看>>
搭建SSM框架的配置文件
查看>>
代理模式
查看>>
Confluence 6 系统运行信息中的 JVM 内存使用情况
查看>>
Confluence 6 升级以后
查看>>
实现帖子收藏的流程
查看>>
用JS实现版面拖拽效果
查看>>
【Codeforces Round #445 (Div. 2) D】Restoration of string
查看>>
【51.27%】【codeforces 604A】Uncowed Forces
查看>>
RDLC报表开发分组笔记
查看>>
二丶CSS
查看>>
《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
查看>>
Hibernate主键生成策略
查看>>
Crushing Machinery - Strong Support of Cement Enterprise
查看>>
AsyncTask
查看>>
Django框架(十九)—— drf:序列化组件(serializer)
查看>>
JS一些概念知识及参考链接
查看>>
关于JS中&&和||用法技巧
查看>>
suoi14 子树查找 (dfs)
查看>>