本菜鸟原来用队列写,在洛谷交拿了70分,后三个测试点超时,于是寻思着用链表,然后发现自己竟用指针造了一个纯正的链表!!!(除了在数据存储的时候偷懒用了个数组,其他没有任何数组的痕迹!!!)然而…… 结果由绿+黑变成了红+黑! 于是只能求大佬来帮改代码(70分就好,后三个点不用管……)
#include<iostream>
using namespace std;
struct ListNode{
ListNode* next;
int fruit;
int num;
ListNode(int value, int n, ListNode *next1 = nullptr)
{
fruit = value;
next = next1;
num = n;
}
};
int n;
int x[200000];
ListNode *FruitList = nullptr;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&x[i]);
}
for(int i=n-1;i>=0;i--){
FruitList = new ListNode(x[i], i+1, FruitList);
}
ListNode *fl, *fl0;
while(FruitList!=nullptr){
int now=FruitList->fruit;
printf("%d ",FruitList->num);
FruitList=FruitList->next;
fl=FruitList;
while(fl!=nullptr){
if(now!=fl->fruit)
{
now=fl->fruit;
printf("%d ",fl->num);
if (fl==FruitList){
FruitList=FruitList->next;
fl=FruitList;
}else{
fl0->next=fl->next;
}
}
fl0=fl;
fl=fl->next;
}
printf("\n");
fl=FruitList;
while(fl!=nullptr){
printf("%d ",fl->num);
fl=fl->next;
}
printf("\n");
}
return 0;
}
求大佬帮忙指正一下错误吧