题目描述:

给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。

这道题目做暴力的想法就是,用一个指针从头到尾遍历,删除哪个元素就把后面的元素统一向前移动一个位置。但是这样的时间复杂度很大,可能要移动很多的元素。

这里利用快速排序中划分的一种思想:用两个指针,后一个指针做遍历用,前一个指针作为一个tag,表示这个tag之前的元素都满足要求

那么具体的代码:

int removeElement(vector<int> &arr, int elem)
{
// write your code here
int size = arr.size();
if(size == 0)
{
return 0;
}
int pre = -1;
for(int cur = 0; cur < size; ++cur)
{
if(arr[cur] != elem)
{
++pre;
if(cur != pre)
{
swap(arr[pre], arr[cur]);
}
}//if
}//for return pre + 1;
}

  

删除数组中等于某个key的所有元素的更多相关文章

  1. java——删除链表中等于给定值的所有元素

    class ListNode{ int val ; ListNode next; public ListNode(int x) { val = x; } public ListNode(int[] a ...

  2. C语言 · 删除数组中的0元素

    算法提高 6-9删除数组中的0元素   时间限制:1.0s   内存限制:512.0MB      编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动.注意,C ...

  3. 算法练习之合并两个有序链表, 删除排序数组中的重复项,移除元素,实现strStr(),搜索插入位置,无重复字符的最长子串

    最近在学习java,但是对于数据操作那部分还是不熟悉 因此决定找几个简单的算法写,用php和java分别实现 1.合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两 ...

  4. (实用篇)PHP中unset,array_splice删除数组中元素的区别

    php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除 ...

  5. PHP删除数组中空值的方法介绍

    这篇文章主要介绍了PHP删除数组中空值的方法介绍,需要的朋友可以参考下 说来惭愧,以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下: ...

  6. PHP中unset,array_splice删除数组中元素的区别

    php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除 ...

  7. Leecode刷题之旅-C语言/python-26.删除数组中的重复项

    /* * @lc app=leetcode.cn id=26 lang=c * * [26] 删除排序数组中的重复项 * * https://leetcode-cn.com/problems/remo ...

  8. leetcode之删除数组中的重复值(26题)

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...

  9. [java]删除数组中的某一个元素

    package org.company.project.test; import java.util.Arrays; import java.util.Scanner; public class Ar ...

随机推荐

  1. SQL Server Schema

    SQL查询是引用表时,需要为其制定模式名. 在数据库的术语中,模式就是名称空间.这种方式可以把相同特性的对象组合到一个共同的名称空间中.模式也可以保护对象,所以DBA可以给模式授予显示权限. 例如,D ...

  2. 如何测试sql语句性能,提高执行效率

    有时候我们经常为我们的sql语句执行效率低下发愁,反复优化后,可还是得不到提高 那么你就用这条语句找出你sql到底是在哪里慢了 示例: SET STATISTICS io ON        SET ...

  3. .Net类型与JSON的映射关系

    首先谢谢大家的支持和关注.本章主要介绍.Net类型与JSON是如何映射的.我们知道JSON中类型基本上有三种:值类型,数组和对象.而.Net中的类型比较多.到底它们是如何映射的呢? 总体来讲,Json ...

  4. linux配置加载顺序

    linux加载配置项时通过下面方式 首先 加载/etc/profile配置 然后 加载/ect/profile.d/下面的所有脚本 然后 加载当前用户 .bash_profile 然后 加载.bash ...

  5. HDU 5794 - A Simple Nim

    题意:    n堆石子,先拿光就赢,操作分为两种:        1.任意一堆中拿走任意颗石子        2.将任意一堆分成三小堆 ( 每堆至少一颗 )        分析:    答案为每一堆的 ...

  6. Gengxin讲STL系列——String

    衔接上一篇引导. 作为第一篇博客,就要大气一点. 可我好像并不知道怎么才能让自己的博客大气一点= =: 明天是我生日,自己先买个中文域名庆祝了一下…… 好了,废话说完了,结果博客也没大气到哪去……,正 ...

  7. Windows 端口和任务 查看 相关命令

    netstat -aon|findstr " //查看端口 tasklist|findstr " //根据PID找到对应的程序 taskkill /f /t /im netbox. ...

  8. Android4大组件

    http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html 快乐阅读: http://www.360doc.com/cont ...

  9. wxwidgets demo

    环境说明: IOS: mac 10.9 wx:  wxWidgets-2.9.5  (http://www.wxwidgets.org/downloads/) gcc: $gcci686-apple- ...

  10. MySQL 5.6 中 TIMESTAMP 的变化

    http://www.williamsang.com/archives/818.html