×

算法练习(10):查找重复元素(1.1.28)

96
kyson老师的算法之路
2017.09.02 19:57* 字数 374

本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本人新建了一个微信群(算法交流),想要加入的,请添加我的微信号:zhujinhui207407 谢谢。另外,本人的个人博客 http://www.kyson.cn 也在不停的更新中,欢迎一起讨论

算法(第4版)

知识点

  • 遍历数组
  • 打印数组中的每个元素

1.1.28 删除重复元素。修改BinarySearch类中的测试用例来删去排序之后白名单中的所有重复元素。

分析

在之前的算法练习(4):二分法查找(1.1.22-1.1.25)中,我们已经实现了数组的排序。现在要在此基础上完成查找重复元素。
解决方式就是简单的遍历数组,然后取出里面的重复元素即可。因为已经在BinarySearch之前进行了排序,所以我们只需要从头到尾遍历即可。我的解法:

public class DumplicateElements {

    public static void main(String[] args) {
        int[] N = {1,2,2,3,4,5,6,6,7,8,9};
        System.out.println("original array:"+ N.toString());
        int[] resultArray = searchDumplicateElements(N);
        System.out.println("result array:"+ resultArray.toString());
        
    }
    
    public static  int[]  searchDumplicateElements (int[] array) {
        
        int[] tempArray = new int[array.length];
        int sameNumTime = 0;
        for(int i = 0 ; i < array.length ; i ++){
            if (i == array.length - 1) {
                break;
            }
        
            if (array[i] == array[i + 1]) {
                tempArray[sameNumTime] = array[i];
                sameNumTime ++ ;
            }
        }
        
        int[] resultArray = new int[sameNumTime];
        for(int j = 0 ; j < sameNumTime ; j ++)
            resultArray[j] = tempArray[j];
        
        
        return resultArray;
    }
    
    
}

看网上的解法大同小异,只是这里推荐一个将数组打印成字符串的方法

就是Arrays.toString()方法,我们只需要把

        System.out.println("result array:"+ resultArray.toString());

替换成

        System.out.println("result array:"+ Arrays.toString(resultArray));

即可

代码索引

DumplicateElements.java

广告

我的首款个人开发的APP壁纸宝贝上线了,欢迎大家下载。

日记本
Web note ad 1