删除重复数据的算法

在工作中碰到这么一个问题:给定一个已经排序的数组(升序),删除数组中重复的数据,但是只能使用一个数组,这个数组的大小可以变化.
例子:  数组:[1,1,2,2,3,3,4,5,7,10]
      输出::[1,2,3,4,5,7,10]
实现(1):
var arr =new Array(1,1,2,2,3,3,4,5,7,10);
var len = arr.length;
for(var i=len-1;i>=1;i--)
{
        if(arr[i-1] == arr[i])
        {
            arr.splice(i,1);
        }    
}
alert(arr);

实现(2):
var arr =new Array(1,1,2,2,3,3,4,5,7,10);var len = arr.length;var k=0;for(var i=1;i<len;i++){        if(arr[k] != arr[i])        {          arr[k+1]=arr[i];           k++;        }    }alert(arr);
但是发现其性能并不是最好的,不知道您是否有更好的算法.(实现语言可以是JavaScript,C#,VB.net,.....)

(0)

相关推荐

  • sqlserver中重复数据值只取一条的sql语句

    复制代码 代码如下: --建立数据表createtable TestData ( ID int identity(1,1) primary key, Data int, ColA varchar(20), ColB varchar(20) ) go --插入测试数据 declare @counts int declare @i int set @counts = 10000 set @i = 1 while @i<=@counts begin insert TestData (Data,ColA

  • 删除数据库中重复数据的几个方法

    方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete

  • sqlserver合并DataTable并排除重复数据的通用方法分享

    代码如下: 复制代码 代码如下: ///<summary> /// 将两个列不同的DataTable合并成一个新的DataTable ///</summary> ///<param name="dt1">源表</param> ///<param name="dt2">需要合并的表</param> ///<param name="primaryKey">需要排重列表

  • 教你几种在SQLServer中删除重复数据方法

    方法一 复制代码 代码如下: declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount

  • SQL语句删除2条重复数据一条保留一条

    -- 任意的测试表 复制代码 代码如下: CREATE TABLE test_delete( name varchar(10), value INT ); go -- 张三100 与 王五80 是有重复的 INSERT INTO test_delete SELECT '张三', 100 UNION ALL SELECT '张三', 100 UNION ALL SELECT '李四', 80 UNION ALL SELECT '王五', 80 UNION ALL SELECT '王五', 80 U

  • SQL Server中删除重复数据的几个方法

    方法一 复制代码 代码如下: declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount

  • sql删除重复数据的详细方法

    一. 删除完全重复的记录 完全重复的数据,通常是由于没有设置主键/唯一键约束导致的.测试数据: 复制代码 代码如下: if OBJECT_ID('duplicate_all') is not nulldrop table duplicate_all GO create table duplicate_all ( c1 int, c2 int, c3 varchar(100) ) GO insert into duplicate_all select 1,100,'aaa' union allse

  • 一个过滤重复数据的 SQL 语句

    数据如下: 303 标准类别 TR_STANDARD_MANAGER     107 巡视记录类别 TR_PATROL_LOG     61 巡视记录类别 TR_PATROL_LOG     221 检修类型 TR_REPAIR_LOG     121 检修管理计划类别 TR_REPAIR_PLAN     141 检修管理计划类别 TR_REPAIR_PLAN     24 器材管理类别 TR_PATROL_PLAN_1     105 巡视计划类别 TR_PATROL_PLAN     10

  • 删除重复数据的算法

    在工作中碰到这么一个问题:给定一个已经排序的数组(升序),删除数组中重复的数据,但是只能使用一个数组,这个数组的大小可以变化. 例子:  数组:[1,1,2,2,3,3,4,5,7,10]       输出::[1,2,3,4,5,7,10] 实现(1): var arr =new Array(1,1,2,2,3,3,4,5,7,10); var len = arr.length; for(var i=len-1;i>=1;i--) {         if(arr[i-1] == arr[i]

  • oracle 删除重复数据

    重复的数据可能有这样两种情况,第一种: 表中只有某些字段一样,第二种是两行记录完全一样. 一.对于部分字段重复数据的删除 1.查询重复的数据 select 字段1,字段2, count(*) from 表名 group by 字段1,字段2 having count(*) > 1 例:Select owner from dba_tables group by owner having count(*)>1; Select owner from dba_tables group by owner

  • mysql查找删除重复数据并只保留一条实例详解

    有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 50 1240 Abraham Lincoln High School 70 35 1241 Acalanes High School 120 89 1242 Academy Of The Canyons 30 30 1243 Agoura High School 89 40 1244 Agour

  • Mysql删除重复数据保留最小的id 的解决方法

    在网上查找删除重复数据保留id最小的数据,方法如下: DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people GROUP BY peopleName HAVING count(peopleName) > 1 ) AND peopleId NOT IN ( SELECT min(peopleId) FROM people GROUP BY peopleName HAVING count(peopleName) >

  • MySQL中删除重复数据的简单方法

    MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考. 第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表 create table tmp3 as select min(id) as col1 from data_content

  • postgresql 删除重复数据的几种方法小结

    在使用PG数据库的这段时间,总结了三种删除重复数据的方法,其中最容易想到的就是最常规的删除方法,但此方法性能较差,删数据耗时较久,虽容易实现,但性能太差,影响写数据的速率. 另外就是被使用的group by删除方法,效率较高. 还有一种是刚发现的,还没有验证,现在就总结下这三种删除方法,并验证各自的执行效率. 首先创建一张基础表,并插入一定量的重复数据. test=# create table deltest(id int, name varchar(255)); CREATE TABLE te

  • mysql数据库删除重复数据只保留一条方法实例

    1.问题引入 假设一个场景,一张用户表,包含3个字段.id,identity_id,name.现在身份证号identity_id和姓名name有很多重复的数据,需要删除只保留一条有效数据. 2.模拟环境 1.登入mysql数据库,创建一个单独的测试数据库mysql_exercise create database mysql_exercise charset utf8; 2.创建用户表users create table users( id int auto_increment primary

  • postgresql 删除重复数据案例详解

    1.建表 /* Navicat Premium Data Transfer Source Server : localhost Source Server Type : PostgreSQL Source Server Version : 110012 Source Host : localhost:5432 Source Catalog : postgres Source Schema : public Target Server Type : PostgreSQL Target Server

  • SQL删除重复数据的实例教程

    目录 1 SQL去重 2 distinct 3 group by 1. 查询根据名字去重后数据(名字相同取id值大的) 2. 删除名字相同数据(名字相同保留id值大的) 4 总结 1 SQL去重 SQL中去除完全相同数据可以用distinct关键字,任意字段去重可以用group by,以下面的数据表为例. 2 distinct 存在两条完全相同的纪录,用关键字distinct就可以去掉 根据单个字段去重,能精确去重; 作用在多个字段时,只有当这几个字段的完全相同时,才能去重; 关键字distin

随机推荐