代码如下:
int findLHS(int* nums, int numsSize) {
if(numsSize<2)
return 0;
int cmp(const void* a,const void* b)
{
return *(int*)a-*(int*)b;
}
int result = 0;
qsort(nums,numsSize,sizeof(int),cmp);
typedef struct linklist
{
int num;
int count;
struct linklist* next;
};
struct linklist* head;
head = (struct linklist*)malloc(sizeof(struct linklist));
head->num = *nums;
head->count = 1;
head->next=NULL;
struct linklist* p1;
p1 = head;
for(int n = 1;n < numsSize;n++)
{
if(*(nums+n)==p1->num)
p1->count++;
else
{
struct linklist* p2;
p2 = (struct linklist*)malloc(sizeof(struct linklist));
p2->num = *(nums+n);
p2->count = 1;
p2->next=NULL;
p1->next=p2;
p1=p2;
}
}
while(head->next!=NULL)
{
if(head->next->num-head->num == 1)
{
if(head->next->count+head->count>result)
result = head->next->count+head->count;
}
head=head->next;
}
return result;
}