九度 題目1370 陣列中出現次數超過一半的數字

2021-06-22 04:35:06 字數 993 閱讀 9547

時間限制: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 ...