何海濤:《劍指offer:名企面試官精講典型程式設計題》:九度oj
題目描述:
統計乙個數字在排序陣列中出現的次數。
輸入:每個測試案例包括兩行:
第一行有1個整數n,表示陣列的大小。1<=n <= 10^6。
第二行有n個整數,表示陣列元素,每個元素均為int。
第三行有1個整數m,表示接下來有m次查詢。1<=m<=10^3。
下面有m行,每行有乙個整數k,表示要查詢的數。
輸出:對應每個測試案例,有m行輸出,每行1整數,表示陣列中該數字出現的次數。
樣例輸入:
8
1 2 3 3 3 3 4 5
1
3
樣例輸出:
4
思想:使用二分法找到具體數字的位置,然後需要前後掃瞄來確定數字的個數~^_^
**ac:
// 用2分法!! ^_^
#include #include int main()
scanf("%d", &m);
while( m-- )
else if( k > num[mid] )
else
}cou = 0;
i = mid;
while( i < n )
else
}i = mid - 1;
while( i >= 0 )
else
}printf("%d\n", cou);}}
return 0;
}
數字在排序陣列中出現次數
統計乙個數字在排序陣列中出現的次數。思路 求乙個數字在這個排序陣列中出現的次數,首先想到的是使用二分查詢,當我找到乙個位置,然後往前就可以到達最前面第乙個出現該數字的位置,往後就可以到達最後面最後乙個出現該數字的位置,然後兩個位置相減此時就得到該數字出現的次數。但是問題在於我用二分查詢到位置後,然後...
數字在排序陣列中出現的次數
題目 統計乙個數字下排序陣列中出現的次數。例如輸入排序陣列和數字3,由於3在這個陣列中出現了4次,因此輸出4。當然第一眼就能想到遍歷這個陣列然後統計這個陣列中某個數字出現的次數。當然第一眼就能想到的方法通常來說效率都不怎麼樣 再稍微想一下這個題目,是乙個已序的陣列,所以呢,不難想到二分查詢。我們可以...
數字在排序陣列中出現的次數
題目 統計乙個數字在排序陣列中出現的次數。思路 總體思想是二分查詢和遞迴。把統計數字k的出現次數轉換為查詢第乙個k和最後乙個k。時間複雜度為o logn public int getnumberofk int array int k int length array.length int first...