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");
}
}
from collections import Counter a = raw_input().split()[1:] b = filter(lambda x:x[1] == 1, Counter(a).items()) print "None" if len(b) == 0 else sorted(b, key=lambda x:a.index(x[0]))[0][0]
#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。
import java.io.PrintStream; import java.text.ParseException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main { public static Scanner in = new Scanner(System.in); public static PrintStream out = System.out; public static void main(String[] args) throws ParseException { int N = in.nextInt(); int bet; // list存储可能的结果值 List<Integer> list = new LinkedList<>(); HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < N; ++i) { bet = in.nextInt(); Integer val = map.get(bet); if (val == null) { map.put(bet, 1); list.add(bet); } else { map.put(bet, val + 1); } } // 检测list存储的值是否符合要求 boolean findWinner = false; for (int i = 0; i < list.size(); ++i) { if (map.get(list.get(i)) == 1) { out.println(list.get(i)); findWinner = true; break; } } if (!findWinner) { out.println("None"); } } }