求有序数组中不重复数字的出现次数

Posted 边城叙缘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求有序数组中不重复数字的出现次数相关的知识,希望对你有一定的参考价值。

不使用jdk的集合类,通过遍历数组得到,因为数组是有序的,在遍历数组的时候,统计整数是否重复出现,如果没有重复出现计数加一,若重复出现则是计数减一。

java解决方法,时间复杂度O(n)。

    public int countNoRepeatNum(int[] arr, int n) {
        if(arr == null || n <= 0) return -1;
        boolean repeat = false;
        int count = 1;
        int num = arr[0];
        for(int i=1;i<n;i++) {
            if(!repeat) {
                if(arr[i] != num) {
                    num = arr[i];
                    count++;
                } else {
                    repeat = true;
                    count--;
                }
            } else {
                if(arr[i] != num) {
                    count++;
                    num = arr[i];
                    repeat = false;
                } 
            }
        }
        return count;
    }

 

以上是关于求有序数组中不重复数字的出现次数的主要内容,如果未能解决你的问题,请参考以下文章

在c#中找出一个数组中出现次数最多的元素,求各种方法,要详细的代码

数组中有一个数字出现次数超过数组长度一半,找出这个数字(用C语言解决)。要求时间复杂度尽量小。

数组中数字出现的次数

记某公司面试算法题:查找一个有序数组某个数字出现的次数

记某公司面试算法题:查找一个有序数组某个数字出现的次数

怎样求数组中元素重复的次数