陣列長度 n ≤ 100,000,找出現次數 > n/2 的數,不存在輸出 -1。
O(n log n)a[n/2] 必為候選答案(若存在過半數,排序後必佔據中間位置)O(n)void qsort(int l, int r) {
if (l >= r) return;
int pivot = arr[l], i=l, j=r;
while (i=pivot) j--;
swap(i,j);
while (in/2 ? mid : -1);
}
}
用結構體陣列記錄 (value, count),查找用線性搜尋 O(n²),n=100,000 且值不重複時 TLE。可改用雜湊表或 Boyer-Moore 投票算法 O(n) O(1) 空間。
Time: 800 ms, Memory: 1304 KB (C, 九度 OJ 1370)