A1041

一開始沒讀懂題目,將unique翻譯成了公平,然後便將重心移向了尋找排在最中間的數,徹底走歪了。

#include<cstdio>
#include<cstdlib>
#include<string.h>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
using namespace std;
int arr[100001];
bool cmp(int a,int b){
	if(a!=b)return a<b;
}
int main(){
	#ifdef ONLINE_JUDGE
	#else
		freopen("1.txt","r",stdin);
	#endif
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&arr[i]);
	}
	sort(arr,arr+n,cmp);
	if(n==1||n==2){
		printf("None");
		return 0;
	}
	if(n%2!=0){
		int left=n/2-1,right=n/2+1;
		while(left>=0){
			if(arr[left]==arr[n/2]&&arr[right]==arr[n/2]){
				left--;
				right++;
			}else if(arr[left]!=arr[n/2]&&arr[right]!=arr[n/2]){
				printf("%d",arr[n/2]);
				break;
			}else{
				printf("None");
				break;
			}
		}
		if(left<0)printf("None");
	}else{
		int left=n/2-2,right=n/2+1;
		while(left>=0){
			if(arr[left]==arr[n/2]&&arr[right]==arr[n/2]){
				left--;
				right++;
			}else if(arr[left]!=arr[n/2]&&arr[right]!=arr[n/2]){
				printf("%d",arr[n/2]);
			}else{
				printf("None");
				break;
			}
		}
		if(left<0)printf("None");
	}
}

讀懂題目後,這題還是很容易做的

#include<cstdio>
#include<cstdlib>
#include<string.h>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
using namespace std;
int arr1[10001]={0},arr2[100001];
int main(){
	#ifdef ONLINE_JUDGE
	#else
		freopen("1.txt","r",stdin);
	#endif
	int n,j;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&arr2[i]);
		arr1[arr2[i]]++;
	}
	for(j=0;j<n;j++){
		if(arr1[arr2[j]]==1){
			printf("%d",arr2[j]);
			break;
		}
	}
	if(j==n)printf("None");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章