求有序數組中不重複數字的出現次數

不使用jdk的集合類,經過遍歷數組獲得,由於數組是有序的,在遍歷數組的時候,統計整數是否重複出現,若是沒有重複出現計數加一,若重複出現則是計數減一。java

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;
    }
相關文章
相關標籤/搜索