【 OJ 】 HDOJ1029 字符超過一半求中位數字符 [ 28 ]

開始拿到此題以爲是對於排序的時間限制,畢竟正常人看了題目第一本能都是想到排序,拿到中位數輸出,快排,二分.....基本都沒用,後來看了網上的解法,MD連數組都不要...只要一個臨時變量,思想很簡單,假設多於一半的是x

那麼剩下的數字!x,也就是說在輸入讀取的時候一樣++,不一樣--,到了0換成重新讀取的數字,極限想就是假設x全部

在前面,!x全部在後面,++一定>--,如果!x在前,說明x在後更多,到了0的時候,後面的x ++一定上去..

# include<iostream>
using namespace std;
int main(void) {
	int N;
	int num,temp;
	int count;
	while (cin >> N) {
		count = 0;
		for (int i = 0; i < N; ++i) {
			cin >> temp;
			if (!count) {
				count++;
				num = temp;
			}
			else {
				if (num == temp) {
					count++;
				}
				else {
					count--;
				}
			}
		}
		cout << num << endl;
	}

	system("pause");
	return 0;
}

本題已被AC

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章