時間限制:1 秒
記憶體限制:32 兆
特殊判題:否
提交:2022
解決:616
題目描述:陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。
輸入:每個測試案例包括2行:
第一行輸入乙個整數n(1<=n<=100000),表示陣列中元素的個數。
第二行輸入n個整數,表示陣列中的每個元素,這n個整數的範圍是[1,1000000000]。
輸出:對應每個測試案例,輸出出現的次數超過陣列長度的一半的數,如果沒有輸出-1。
樣例輸入:
9
1 2 3 2 2 2 5 4 2
樣例輸出:
2
#include #include #include #include using namespace std;
const int maxn = 100010;
bool checkmorethanhalf(int* arr, int n, int res)
int main()
else if(ipos == arr[i])
itimes++;
else
itimes--;
}if(checkmorethanhalf(arr, n, ipos))
printf("%d\n", ipos);
else
printf("-1\n");
}return 0;
}
題目1370 陣列中出現次數超過一半的數字
不錯的題。o n k log n 過不了,o n 可以過,有些人直接快排過了,這個似乎有點不太好 這道題兩種思路 1 o n k log n 我的超時了,即使遞迴改為非遞迴也超時 思路 如果乙個數出現次數超過總個數的一半,那麼這個數的數值必然等於中位數的數值,因為如果排序的話,那麼這個數必然會 包住...
數字在排序陣列中出現次數
統計乙個數字在排序陣列中出現的次數。思路 求乙個數字在這個排序陣列中出現的次數,首先想到的是使用二分查詢,當我找到乙個位置,然後往前就可以到達最前面第乙個出現該數字的位置,往後就可以到達最後面最後乙個出現該數字的位置,然後兩個位置相減此時就得到該數字出現的次數。但是問題在於我用二分查詢到位置後,然後...
數字在排序陣列中出現的次數
何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 統計乙個數字在排序陣列中出現的次數。輸入 每個測試案例包括兩行 第一行有1個整數n,表示陣列的大小。1 n 10 6。第二行有n個整數,表示陣列元素,每個元素均為int。第三行有1個整數m,表示接下來有m次查詢。1 m 10 ...