`
X13144131X
  • 浏览: 4433 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

百万数据去掉唯一重复的一个

阅读更多

今天面试的过程中,xxx公司的技术总监问了一个问题,本人觉得在某种情况下是可行的,但是貌似被否认了。求解释!

 

要求如下:从1-100W的数据,中间有且只有一个重复的,个数为100W零1,找出来即可。

 

我想的结果如下:假设数据是无序,但是1-100W之间有100W个数字,加上重复的一个,即100W零1.

 

步骤一、先将这100W零1按大小排序。

 

步骤二、首+尾=100W零1,取值往中间靠近。

 

步骤三、如果相加的和大于理论上的中间值(肯定是大于理论上的中间值)。则表示这两个数字中的一个必定是重复的。

 

然后分别用这两个数字,根据索引去取特定位置上的值来做判断即可得出。

 

如果题目是这样的,我觉得没错啊!

 

Q:如果100W条数据里面,只有一个是重复的,而且这些数值并不是像1、2、3、4...  这样,应该怎么去实现?

0
8
分享到:
评论
29 楼 X13144131X 2012-10-03  
cx372877498 写道
兄弟貌似题目你就理解错了,不是说是1到100w,就好像是100w到200w它也有100w个数字啊。就是这个数字不是一个有序的组合。

当时他就是这个意思,对算法不怎么行,如果个数任然是100W零1个,但是数值上并没有特殊的规律,确实不知道怎么搞好了,而且是要你把重复的取出来,效率那是再说
28 楼 cmdmg 2012-09-17  
此贴已沉啦
27 楼 xlaohe1 2012-09-13  
xlaohe1 写道
cmdmg 写道
copancn 写道
xlaohe1 写道
把所有数都加起来,然后减去1到100W的和得到那个数


这个是正确解啊,题目讲的很清楚,1-100W,找出唯一的重复数

我靠  楼主的题目说的很清楚:Q:如果100W条数据里面,只有一个是重复的,而且这些数值并不是像1、2、3、4...  这样,应该怎么去实现?

你看清题吧:从1-100W的数据,中间有且只有一个重复的,个数为100W零1,找出来即可。

  好像是没说从1开始的。。。   
26 楼 xlaohe1 2012-09-13  
cmdmg 写道
copancn 写道
xlaohe1 写道
把所有数都加起来,然后减去1到100W的和得到那个数


这个是正确解啊,题目讲的很清楚,1-100W,找出唯一的重复数

我靠  楼主的题目说的很清楚:Q:如果100W条数据里面,只有一个是重复的,而且这些数值并不是像1、2、3、4...  这样,应该怎么去实现?

你看清题吧:从1-100W的数据,中间有且只有一个重复的,个数为100W零1,找出来即可。
25 楼 cmdmg 2012-09-13  
copancn 写道
xlaohe1 写道
把所有数都加起来,然后减去1到100W的和得到那个数


这个是正确解啊,题目讲的很清楚,1-100W,找出唯一的重复数

我靠  楼主的题目说的很清楚:Q:如果100W条数据里面,只有一个是重复的,而且这些数值并不是像1、2、3、4...  这样,应该怎么去实现?
24 楼 copancn 2012-09-13  
xlaohe1 写道
把所有数都加起来,然后减去1到100W的和得到那个数


这个是正确解啊,题目讲的很清楚,1-100W,找出唯一的重复数
23 楼 xlaohe1 2012-09-13  
把所有数都加起来,然后减去1到100W的和得到那个数

22 楼 ilrxx 2012-09-13  
21 楼 cnlinkin 2012-09-13  
leaow567 写道
bitset呢?

agreed,创建一个100Wbit长的bitset,将这100w+1个数据映射到每个slot中,直到出现碰撞为止。映射函数用n mod 100W
20 楼 zzk7811 2012-09-13  
二分法查找就成
19 楼 闪闪4521 2012-09-13  
闪闪4521 写道
编程珠玑第一章开篇就是这个例子,只不过他说的是排序电话号码...
如果找出一个相同的,要最坏情况也只需要遍历一遍就行了,时间复杂度O(n)

所以面试前先把一些经典的书复习一下啊
18 楼 kfc_davy 2012-09-13  
jeschou 写道
Eddic 写道
flatcsun 写道
如果用java的话可以用集合实现,遍历一遍就好了。

Set set = new HashSet();
Object repeatObj = null;//重复的数据
for(int i=0; i<array.length; i++){
    if(set.contains(array[i]){
        repeatObj = array[i];
        break;
    }else{
        set.add(array[i]);
    }
}

set.contains()里边也要遍历的呀



HashSet不会遍历,它是用hash算法直接计算元素位置
HashSet的contains方法效率是非常高的

另外,因为数据量已知,100W,可以在构造HashSet的时候加一些参数,以进一步提高性能

效率是高,不认为的话哈希碰撞也不大会,但是百万级甚至千万级别以上,都放到一个map中合适吗
17 楼 闪闪4521 2012-09-13  
编程珠玑第一章开篇就是这个例子,只不过他说的是排序电话号码...
如果找出一个相同的,要最坏情况也只需要遍历一遍就行了,时间复杂度O(n)
16 楼 jeschou 2012-09-13  
Eddic 写道
flatcsun 写道
如果用java的话可以用集合实现,遍历一遍就好了。

Set set = new HashSet();
Object repeatObj = null;//重复的数据
for(int i=0; i<array.length; i++){
    if(set.contains(array[i]){
        repeatObj = array[i];
        break;
    }else{
        set.add(array[i]);
    }
}

set.contains()里边也要遍历的呀



HashSet不会遍历,它是用hash算法直接计算元素位置
HashSet的contains方法效率是非常高的

另外,因为数据量已知,100W,可以在构造HashSet的时候加一些参数,以进一步提高性能
15 楼 xlaohe1 2012-09-13  
直接异或。
14 楼 leaow567 2012-09-13  
bitset呢?
13 楼 ylsun1113 2012-09-13  

这个不能用Java,要用sql实现。用group by + having count(*)>1实现
12 楼 gqsunrise 2012-09-13  
亲,直接group by然后having不行么?
11 楼 Eddic 2012-09-13  
flatcsun 写道
如果用java的话可以用集合实现,遍历一遍就好了。

Set set = new HashSet();
Object repeatObj = null;//重复的数据
for(int i=0; i<array.length; i++){
    if(set.contains(array[i]){
        repeatObj = array[i];
        break;
    }else{
        set.add(array[i]);
    }
}

set.contains()里边也要遍历的呀
10 楼 flatcsun 2012-09-13  
如果用java的话可以用集合实现,遍历一遍就好了。

Set set = new HashSet();
Object repeatObj = null;//重复的数据
for(int i=0; i<array.length; i++){
    if(set.contains(array[i]){
        repeatObj = array[i];
        break;
    }else{
        set.add(array[i]);
    }
}

相关推荐

    去除重复数据,去除重复数据算法

    根据给定文件的信息,本文将围绕“去除重复数据”这一主题进行深入探讨,重点解析一个简单易懂且适用性广的去重算法,并通过具体的代码示例来展示其实现过程。 ### 去除重复数据的基本概念 在计算机科学中,“去除...

    sql去掉重复的数据 完全相同的数据去掉重复 及优化

    ### SQL去掉重复的数据及优化 在数据库管理与应用开发中,数据去重是一个常见的需求,尤其是在数据清洗、数据整合等场景下尤为重要。本文将详细探讨如何利用SQL查询语句来去除表中的重复记录,并在此基础上进一步...

    易语言学习进阶去除重复数据源码

    去除重复数据是为了确保数据的唯一性,这在统计分析、数据清洗或构建数据库时非常关键。在易语言中,可以使用各种方法来实现这一目标,比如遍历数据源并比较每个元素,或者利用集合(Set)数据结构的特性,因为集合...

    易语言最简单的数据去除重复源码

    总的来说,"易语言最简单的数据去除重复源码"这个主题为我们提供了一个了解如何在易语言环境下处理数据重复问题的入口。通过学习和实践,我们可以更好地掌握易语言的编程技巧,并将其应用于实际的数据处理任务中。

    matlab中如何去掉数组中重复的值

    在数据处理过程中,去除数组中重复的值是一个常见的问题,本文将介绍 Matlab 中去掉数组中重复的值的方法。 unique 函数 Matlab 提供了一个名为 unique 的函数,该函数可以删除数组中的重复值。unique 函数的基本...

    基于MD5算法的重复数据删除技术的研究与改进

    其基本原理是在数据写入或备份过程中识别并去除重复的数据副本,从而有效利用存储空间。这项技术广泛应用于数据中心、云计算环境和个人存储设备中,有助于降低存储成本、提高存储效率。 #### 三、MD5算法在重复数据...

    如何删除表中重复数据

    这条语句首先创建了一个名为`temp_table`的临时表,并通过`SELECT DISTINCT`子句来选择`original_table`表中不重复的所有列的数据。 2. **清空原表**: ```sql TRUNCATE TABLE original_table; ``` 使用`...

    重复数据删除技术源代码C语言

    8. **去重策略**:去重策略包括全局去重(全局数据池中只保留一个副本)和增量去重(只删除新数据中的重复)。1.4.1版本可能支持这两种策略,并根据应用场景灵活选择。 9. **性能优化**:为了处理大数据,优化是必...

    Excel重复数据怎么去掉 -删除重复项-功能轻松去重.docx

    因此,删除重复数据行是 Excel 数据处理中一个非常重要的步骤。下面,我们将详细介绍 Excel 删除重复数据行的方法和技巧。 一、删除重复项功能的使用 Excel 提供了一个名为"删除重复项"的功能,该功能可以快速删除...

    sql+如何去重复数据,数据库去重复数据

    `ROW_NUMBER()`是一个常用的窗口函数,可以为每一行分配一个唯一的数字。 **示例:** 使用`ROW_NUMBER()`函数去除基于`employee_id`和`order_date`的重复记录,并保留每组中的第一条记录: ```sql WITH cte AS ( ...

    oracle中如何删除重复数据

    为了提高效率,应先创建一个临时表存储重复数据,然后删除: ``` CREATE TABLE 临时表 AS SELECT 字段1, 字段2, COUNT(*) FROM 表名 GROUP BY 字段1, 字段2 HAVING COUNT(*) &gt; 1 DELETE FROM 表名 a ...

    实例介绍删除数据库中重复数据的几个方法

    `语句可以直接获取一个去除完全重复记录后的结果集。这个操作不会修改原始表,而是返回一个新的结果集。 2. **删除重复记录(保留一条)** - 创建一个临时表,并使用`SELECT DISTINCT * INTO #Tmp FROM 表名;`...

    检查GridControl列表视图某列是否有重复数据

    在IT领域,尤其是在软件开发中,数据管理是一个关键部分,特别是在使用像GridControl这样的控件时。...但以上步骤提供了一个基础框架,可以帮助你开始解决如何检查GridControl列表视图中是否存在重复数据的问题。

    最简单的数据去除重复模块源码

    标题中的“最简单的数据去除重复模块源码”指的是一个用于处理数据去重的程序源代码,这通常涉及到编程和数据处理领域。数据去重是指在数据集中删除重复的记录,以确保数据的唯一性和准确性。在易语言环境中,这样的...

    repNum.rar_数据重复_重复数

    在这个场景中,"repNum.txt"文件很可能包含了一种或多种用于检测和去除重复数据的方法。 去除重复数据的常见方法有以下几种: 1. **基于哈希值**:通过计算每个数据记录的哈希值来快速检查是否重复。如果两个记录...

    QQ数据重复过滤工具

    在数据处理领域,重复数据是一个常见的问题,特别是在大型数据库或日志文件中。重复数据可能会导致统计结果偏差,占用不必要的存储空间,并可能导致系统性能下降。QQ数据重复过滤工具通过先进的算法和技术,有效地...

    完整版组合框、列表框去重复数据妙法.rar

    例如,VB6中的ComboBox控件有一个RemoveDuplicates属性,可以设置为True来自动去除重复。 6. 多步处理:在大型数据集的情况下,可以分批加载数据并即时去重,防止一次性处理大量数据导致的性能问题。 7. 实时监控...

    利用易语言数据结构去除重复项源码.7z

    本主题涉及的是如何利用易语言的数据结构来处理重复数据,这是一个在编程中常见的问题,特别是在数据处理、数据分析和算法设计中。 易语言的数据结构主要包括数组、列表、集合、字典等,这些数据结构在处理数据时各...

    操作Excel文档,筛选,查询的数据,过滤重复的数据。

    在Excel中,对数据进行筛选、查询和去除重复项是高效管理和分析数据的关键步骤。以下是对这些知识点的详细说明: 1. **筛选数据**:筛选功能允许用户根据特定条件显示或隐藏工作表中的行。在Excel中,可以使用...

Global site tag (gtag.js) - Google Analytics