Each input file contains one test case. Each case contains a line which begins with a positive integer N (<=105) and then followed by N bets. The numbers are separated by a space.
For each test case, print the winning number in a line. If there is no winner, print "None" instead.
7 5 31 5 88 67 88 17
31
#include<stdio.h> int main() { int n, flag = 0, i, a[100005], num[100005] = {}; scanf("%d", &n); for (i = 0;i < n;i++) { scanf("%d", &a[i]); num[a[i]]++; } for (i = 0;i < n;i++) { if (num[a[i]] == 1) { flag = 1; printf("%d", a[i]); break; } } if (flag == 0) printf("None"); return 0; } 看错了空间,蠢得要死。
#include <cstdio> const int maxn = 100005; int hashmap[maxn] = {0}; int order[maxn]; int main(void){ int n; scanf("%d", &n); for(int j = 0; j < n; j++){ int tmp; scanf("%d", &tmp); hashmap[tmp]++; order[j] = tmp; } int i; for(i = 0; i < n; i++){ if(hashmap[order[i]] == 1){ printf("%d", order[i]); break; } } if(i == n) printf("None\n"); return 0; }
#include <bits/stdc++.h> using namespace std; const int N = 1e4+10; int arr[N*10],mp[N]; int main(){ int n,x; scanf("%d",&n); for(int i = 0; i < n; i++){ scanf("%d",&arr[i]); mp[arr[i]]++; } int flag = 1; for(int i = 0; i < n; i++){ if(mp[arr[i]]==1){ printf("%d\n",arr[i]); flag = 0; break; } } if(flag) printf("None\n"); return 0; }
import java.io.;
import java.util.Scanner;
/*
*/
public class Main {
public static void main(String[] args) throws IOException
{
Scanner read=new Scanner(System.in);
int n=read.nextInt();
int [] num=new int[100005];
int [] a=new int[100005];
for(int i=0;i<n;i++)
{
num[i]=read.nextInt();
a[num[i]]++;
}
for(int i=0;i<n;i++)
{
if(a[num[i]]==1)
{
System.out.println(num[i]);
return;
}
}
System.out.println("None");
}
}
#include <iostream> using namespace std; int main() { int n = 0; int a[100001] = {0}; //存出现次数 int b[100001] = {0}; //存输入顺序的不同的数字 int temp = 0, i = 0, j = 0; cin >> n; for (i = 0; i < n; i++) { cin >> temp; if (a[temp] == 0) //当这个数没有出现过时,就写入b { b[j] = temp; j++; } a[temp]++; //该数为下标的次数加一 } for (i = 0; i < j; i++) //按照输入的顺序来判断输入的数据 { if (a[b[i]] == 1) //快速索引,定位是否有为1的独特值 { cout << b[i]; break; } } if (i == j) //判断不存在的情况 cout << "None"; return 0; }
#include <iostream> using namespace std; int main() { int N,a[100007],c[100007]={0}; bool flag=false; cin>>N; for(int i=0;i<N;i++) { cin>>a[i]; c[a[i]]++; } for(int i=0;i<N;i++) { if(c[a[i]]==1) { cout<<a[i]<<endl; flag = true; break; } } if(!flag) cout<<"None"<<endl; return 0; }
#include<cstdio>
//C短短的20行左右的代码,综合的想 法就是位图排序
#define MAX 999999
int arr[MAX];
int flag[MAX] = {0};
int total;
int main()
{
scanf("%d", &total);
for(int i = 0; i<total; i++)
{
scanf("%d", &arr[i]);
flag[arr[i]]++;
}
for(int i = 0; i<total; i++)
{
if(flag[arr[i]] == 1){
printf("%d", arr[i]);
return 0;
}
}
printf("None");
return 0;
}
#include <iostream> using namespace std; #define LEFT true #define RIGHT false typedef struct sNode { int value; bool remove; sNode *l, *r; sNode() { l = r = NULL;remove = false; } sNode(int v) :value(v) { l = r = NULL;remove = false; } }Tree; void del(sNode* &node, sNode* parent, bool left) { sNode* d; if (parent) { if (!node->r) { if (left)parent->l = node->l; else parent->r = node->l; delete node; node = NULL; } else if (!node->l) { if (left)parent->l = node->r; else parent->r = node->r; delete node; node = NULL; } else { sNode* p = node; d = node->r; while (d->l) { p = d; d = d->l; } node->value = d->value; node->remove = d->remove; if (p - node)del(d, p, LEFT); else del(d, p, RIGHT); } } else { if (!node->r) { d = node; node = node->l; delete d; d = NULL; } else if (!node->l) { d = node; node = node->r; delete d; d = NULL; } else { sNode* p = node; d = node->r; while (d->l) { p = d; d = d->l; } node->value = d->value; node->remove = d->remove; if (p - node)del(d, p, LEFT); else del(d, p, RIGHT); } } } void remove(Tree* &tree,sNode* parent,bool left) { while (tree && tree->remove)del(tree, parent, left); if (tree) { if (tree->l)remove(tree->l, tree, LEFT); if (tree->r)remove(tree->r, tree, RIGHT); } } bool insert(sNode* node, Tree* tree) { if (node->value == tree->value) { tree->remove = true; return false; } else if (node->value < tree->value) if (tree->l)insert(node, tree->l); else tree->l = node; else if (tree->r)insert(node, tree->r); else tree->r = node; return true; } bool inIt(int num, Tree* tree) { if (!tree)return false; if (tree->value == num)return true; if (tree->value > num)return inIt(num, tree->l); else return inIt(num, tree->r); } void del(Tree* &tree) { if (!tree)return; del(tree->l); del(tree->r); delete tree; tree = NULL; } int main(int argc, const char* argv[]) { ios::sync_with_stdio(false); int N; cin >> N; int* num = new int[N]; Tree* tree = NULL; for (int read, i = 0;i < N;i++) { cin >> read; num[i] = read; sNode* node = new sNode(read); if (!tree)tree = node; else insert(node, tree); } remove(tree, NULL, true); if (!tree)cout << "None"; else for(int i=0;i<N;i++) if (inIt(num[i], tree)) { cout << num[i]; break; } del(tree); delete[] num; //system("pause"); return 0; }
import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); int[] count=new int[10001]; ArrayList<Integer> a=new ArrayList<Integer>(); while(n-->0){ int t=in.nextInt(); a.add(t); count[t]++; } Iterator<Integer> it=a.iterator(); while(it.hasNext()){ int t=it.next(); if(count[t]!=1) continue; else{ System.out.println(t); return; } } System.out.println("None"); } }
#include<bits/stdc++.h> using namespace std; int hashtable[10010]; int main(){ int n; cin>>n; int a[n]; for(int i=0;i<n;i++){ scanf("%d",&a[i]); hashtable[a[i]]++; } bool flag=0; for(int i=0;i<n;i++){ if(hashtable[a[i]]==1){ printf("%d\n",a[i]); flag=1; break; } } if(!flag){ printf("None\n"); } return 0; }
#include <iostream> using namespace std; const int maxn = 100001; int bet[maxn]; int num[maxn] = {0}; int main(){ int n; int flag = 0; cin >> n; for(int i = 0;i < n;i++){ cin >> bet[i]; num[bet[i]]++; } for(int i = 0;i < n;i++){ if(num[bet[i]] == 1){ cout << bet[i]; flag = 1; break; } } if(flag == 0){ cout << "None"; } return 0; }
from collections import Counter lst = list(map(int,input().split()[1:])) con = Counter(lst) boo = True for i in lst: if con[i]==1: print(i) boo = False break if boo: print('None')
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while (sc.hasNext()){ num[] a = new num[10001]; for (int i = 0;i<a.length;i++) { a[i] = new num(0,-1); } int n = sc.nextInt(); for (int i = 0;i<n;i++){ int t = sc.nextInt(); a[t].number++; if (a[t].time<0)a[t].time = i; } int ans = -1; num temp = new num(-1,Integer.MAX_VALUE); for (int i = 1;i<a.length;i++){ if (a[i].number == 1 && a[i].time<temp.time){ temp = a[i]; ans = i; } } System.out.println(ans>0?ans:"None"); } } static class num{ int number; int time; private num(int number,int time){ this.number = number; this.time = time; } } }
思路直接暴力求解 #include <cstdlib> #include <vector> #include <iostream> #include <algorithm> using namespace std; struct num { int a; int count = 0; bool operator == (const int & i) { return this->a == i; } }; int main(int argc, char *argv[]) { int n; while (cin >> n) { vector<struct num> v; int tmp; //memset(a, 0, sizeof(a)); for (int i = 0; i < n; i++) { cin >> tmp; if (find(v.begin(), v.end(), tmp) != v.end()) { vector<struct num>::iterator it = find(v.begin(), v.end(), tmp); it->count++; } else { struct num *p = new struct num; p->a = tmp; p->count++; v.push_back(*p); } } int firstCount = -1; for (int i = 0; i < v.size(); i++) { if (v[i].count == 1) { firstCount = v[i].a; break; } } if (firstCount != -1) { cout << firstCount << endl; } else { cout << "None" << endl; } } system("PAUSE"); return EXIT_SUCCESS; }
//map暴力。 #include <bits/stdc++.h> using namespace std; const int maxn=1e5+5; int n,A[maxn]; map<int,int> mp; int main(){ scanf("%d",&n); for(int i=1,x;i<=n;++i) scanf("%d",&x),A[i]=x,++mp[x]; for(int i=1;i<=n;++i) if(mp[A[i]]==1) printf("%d\n",A[i]),exit(0); printf("None\n"); return 0; }
因此该方法的时间复杂度是O(N^2)
如果使用哈希表记录读取数值和出现的次数,
如果没有,那就加入哈希表中,并记录出现的次数为1;
如果出现过,就更新出现的次数。
是,那么就有可能是所要的答案,但是不一定,因为后面可能还会出现该值。
此时就可以把该值加入链表中,该链表存储可能的结果。
最后遍历链表,查找出第一个只在哈希表中出现一次的值就是结果,如果没有返回None。