算法求最简!……
求给定数列的最高频数 X (出现次数最多的数,如:{1,2,3,3,4} X=3);现有空间复杂度O(n)的算法;想要一个O(1)的算法。#include <stdio.h>
#include <stdlib.h>
struct Node
{
int e,n;
Node *next;
};
int L;
Node *A;
int X;
int main()
{
int e;
Node *p,*q,*r;
A=NULL;
while(scanf("%d",&L)==1)
{
scanf("%d",&e);
A=(Node *)malloc(sizeof(Node));
A->e=e;A->n=1;A->next=NULL;
L--;
while(L>0)
{
scanf("%d",&e);
p=A;
while(p!=NULL)
{
if(p->e==e)
{
p->n++;
break;
}
q=p;p=p->next;
}
if(p==NULL)
{
r=(Node *)malloc(sizeof(Node));
r->e=e;r->n=1;r->next=NULL;q->next=r;
}
L--;
}
int maxn=0;
p=A;
while(p!=NULL)
{
if((p->n)>maxn)
{
maxn=p->n;X=p->e;
}
p=p->next;
}
printf("%d\n",X);
p=A;
while(p!=NULL)
{
q=p;p=p->next;
free(q);
}
A=NULL;
}
return 0;
}
希望大家各抒己见啊……