`
fantasy
  • 浏览: 516271 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

去除重复数

阅读更多
   这是一道外企算法的面试题,前提是不允许使用util包之外的类,即任何集合类都不允许使用。 写出的算法效率越高,此题得分越高,大家可以试一下。题目是输入一串已经排序好的数组,输出消除重复数之后的数组。如:
输入{ 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5 };输出{ 1, 2, 3, 4, 5 };

/**
 * 消除重复数(已经排序好的数组)
 * 
 * @author fangtengfei
 * @date   2010-5-16
 */
public class Distinct {

	public static void main(String[] args) {
		int[] oNums = { 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5 };
		int[] newNums = new int[oNums.length] ;
		int count = 0,index=-1;
		for (int i = 0; i  count) {
		  newNums[++index]=oNums[i];
		  count = oNums[i];
		}
		
	}
}


分享到:
评论
11 楼 adherence 2010-09-13  
我想问一下,如果数组是这样的呢:

int[] oNums = { 1, 2, 4, 4, 3, 3,5, 2, 4, 4, 5, 2, 3, 5, 5 };

也就是说不规律的应该怎么解决?
10 楼 rink1969 2010-09-03  
既然是排序的,应该是二分查找比较快吧
简单的写了一个,边界条件什么的也没仔细考虑
递归调用不知道对性能影响大不大?

#include <stdio.h>

int data[]={1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5};

int bin_comp(int * pdata,int len)
{
	int mid,midindex;

	midindex = len/2;
    mid = pdata[midindex];

    if(pdata[0] == pdata[len])
	{
		return 0;
	}

	if (mid == pdata[len])
	{
        bin_comp(pdata,midindex);
		return 0;
	}

	if (mid == pdata[0])
	{        
        bin_comp(pdata+midindex,midindex);
		return 0;
	}
	
    //if ((mid != pdata[0]) && (mid != pdata[len]))
	{
		bin_comp(pdata,midindex);
		printf("%d    ",mid);
        bin_comp(pdata+midindex,midindex);
	}

	return 0;    
}

main()
{
	int count = sizeof(data)/sizeof(data[0]);

	printf("%d    ",data[0]);
	bin_comp(data,count-1);
	printf("%d    ",data[count-1]);
}
9 楼 fantasy 2010-09-01  
BestUpon 写道
java的set早就做好了!不用那么麻烦!

这是一道外企算法的面试题,前提是不允许使用util包之外的类,即任何集合类都不允许使用。
写出的算法效率越高,此题得分越高,大家可以试一下。
8 楼 BestUpon 2010-09-01  
ps:代码质量:
1,泛型
2,对象for
3,…
7 楼 BestUpon 2010-09-01  
java的set早就做好了!不用那么麻烦!
6 楼 fantasy 2010-07-02  
yutian2211 写道
如果是无序的数组,如何做效率高一点呢?

通过hashtable算法。
5 楼 yutian2211 2010-07-01  
如果是无序的数组,如何做效率高一点呢?
4 楼 fantasy 2010-05-23  
用SET就不是在写一个算法了,而是在用别人的算法。
3 楼 harry2007 2010-05-22  
直接用SET不就可以了?
2 楼 fantasy 2010-05-21  
sorry!我没写清楚,是已经排序好的数组。
1 楼 java_lin 2010-05-21  
public class Distinct {  
 
    public static void main(String[] args) {  
        int[] oNums = { 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5 };  
        List newNums = new ArrayList();  
        int count = 0;  
        for (int i = 0; i < oNums.length; i++) {  
            if (oNums[i] > count) {  
                newNums.add(oNums[i]);  
                count = oNums[i];  
            }  
        }  
    }  




不知道LZ想做个什么,你试想
int[] oNums = { 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5 };  

如果oNums 数组第一个数大于后面的数.会出什么结果吗???

相关推荐

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

    2. 使用 SQL 语句删除重复记录:rs = exec(conn, 'SELECT * FROM TABLE_NAME WHERE ID IN (SELECT MIN(ID) FROM TABLE_NAME GROUP BY REPEAT_FIELD)'); 其中,TABLE_NAME 是数据库表的名称,REPEAT_FIELD 是重复...

    java,输入十个整数,去掉其中重复的数后输出

    用java编的一个小程序,输入10个整数,去掉其中重复的数后输出

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

    1.4.1版本可能提供了清晰的接口供外部调用,例如添加数据、检查重复、删除重复等方法。 总之,"重复数据删除技术源代码C语言"是一个涉及数据结构、哈希算法、比较逻辑和性能优化的复杂工程。通过深入分析和理解...

    plsql删除重复记录

    在开始删除重复记录之前,首先需要确定哪些记录是重复的。以下SQL语句可以用来查询`test`表中所有字段都重复的记录: ```sql SELECT * FROM test GROUP BY name, age, sex, id, sf HAVING COUNT(*) &gt; 1; ``` 这里...

    重复文件去除,清理重复文件

    3. 去除:选择要删除的重复文件后,工具会执行删除操作,同时可以设置保留一个原始文件或根据创建时间、修改时间等标准保留最新的或最早的副本。 对于NAS设备,如群晖或威联通,虽然它们通常配备有Web界面的管理...

    易语言源码易语言双数组去重复数源码.rar

    本源码"易语言双数组去重复数源码.rar"提供了一个解决特定问题的方案——去除双数组中的重复数字。 在易语言中,数组可以是一维或多维的,这里提到的“双数组”可能是指两个一维数组或者两个维度相同的多维数组。...

    C编程中常见的几种删除重复字符或者数字的方法

    "C编程中常见的几种删除重复字符或者数字的方法" C语言是一种广泛使用的高级编程语言,它广泛应用于操作系统、嵌入式系统、数据库等领域。对于字符串的处理是C语言编程中的一个非常重要的方面,其中删除重复字符...

    用算法去除数组中重复的数字

    用算法去除数组中重复的数字(不使用查重函数)通过嵌套for循环和if条件判断实现,用算法去除数组中重复的数字(不使用查重函数)通过嵌套for循环和if条件判断实现

    用筛选法删除输入的10个数中的重复的数

    筛选法是一种遍历数组或列表,检查并删除重复项的算法。在本示例中,它通过两层循环实现:外层循环遍历每个元素,内层循环则比较该元素与之后的所有元素,如果找到重复项,则将其标记为0(或任何特定值),以便后续...

    LabVIEW 删除数组中重复元素实例

    在本例中,我们关注的是如何处理一维数组,即线性数组,来删除重复的元素。 描述中提到的“查找重复元素并删除重复”是实现目标的关键步骤。这通常涉及到以下操作: 1. **查找重复元素**:在LabVIEW中,可以通过...

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

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

    SQL语句删除重复记录

    优点:这种方法可以灵活地删除重复记录,且可以根据需要指定删除的记录数。 缺点:使用游标可能会影响数据库性能,且需要注意游标的使用。 Knowledge Point 3: 使用存储过程删除重复记录 在这种方法中,我们创建...

    二维数组去除重复项

    3. **重构数组**:利用`array_unique()`函数去除`$temp`数组中的重复字符串,得到没有重复项的数组。然后再次遍历这个数组,根据`$stkeep`和`$ndformat`的值决定是否恢复原始的键名和子数组的键名。最后,将结果存储...

    随机产生8位无重复数

    2. **去除重复**:为了确保生成的随机数不重复,可以使用HashSet或数据库来存储已经生成过的随机数,每次生成新数时,都会先检查该数是否已存在,如果不存在则添加并返回,否则继续生成新的随机数。 3. **数据库...

    删除数据表中重复记录

    本文将详细介绍如何在不同的数据库系统(如MySQL、SQL Server、Oracle等)中删除重复记录。 #### SQL删除重复记录的基本思路 删除重复记录的核心思想是先识别出哪些记录是重复的,然后通过某种方式将这些重复记录...

    删除Access数据库中重复的数据

    6. **自动化过程**:如果经常需要进行此操作,可以考虑编写VBA宏或者使用Access的模块功能,自动化整个删除重复数据的过程。这样,只需点击一下按钮,Access就能自动检查并删除重复数据。 7. **预防措施**:为了...

    批量删除重复文件工具 完美

    本文将详细介绍批量删除重复文件的工具及其重要性,以及如何利用“DoubleKiller.exe”这一实用工具来解决这一问题。 批量删除重复文件工具的主要功能是快速检测并移除系统中相同内容的文件,以释放存储空间,提高...

    去除重复查找软件

    2. **高速扫描**:高效的算法使得软件能在短时间内扫描大量文件,大大提高了查找和删除重复文件的速度。 3. **智能选择**:在找到重复文件后,软件通常会提供多种处理策略,比如保留最新版本、最旧版本或者最小文件...

    超级实用去重复统计工具EditPlus

    在替换字段中留空,这样每次找到重复行时,它都会被删除,从而达到去重目的。如果数据量庞大,建议分批操作,以避免一次性处理过多数据导致编辑器卡顿。 此外,EditPlus还支持宏录制和播放,这对于执行重复任务非常...

    批量删除重复的文件

    在IT领域,尤其是在日常计算机操作和数据管理中,批量删除重复的文件是一项常见的需求。这不仅可以节省存储空间,还能保持文件系统的整洁。本篇将详细探讨如何实现这一目标,主要聚焦于“批量删除重复的文件”这个...

Global site tag (gtag.js) - Google Analytics