gpt4 book ai didi

c - C 超出时间限制

转载 作者:行者123 更新时间:2023-11-30 20:18:02 25 4
gpt4 key购买 nike

我编写了在链表中插入元素的代码,它工作正常。然后我编写了用于以给定大小的组反转链表的代码。我的问题是我的代码执行需要太多时间,因为我想要优化此代码。

例如:

输入

8  //number of elements

1 2 2 4 5 6 7 8 //elements

4 //position to reverse the list elements

输出

4 2 2 1 8 7 6 5
struct node *reverse (struct node *head, int k)
{
int count=0,i=0,j=0,a[1000],start=0,end;
struct node *temp=head;
struct node *t=head;
struct node *tt=head;
while(temp!=NULL)
{
temp=temp->next;
count++;
}
while(count!=0)
{
while((k--)&&(t!=NULL))
{
a[i++]=t->data;
t=t->next;
}
end=i-1;
while(start<end)
{
int temp=a[start];
a[start]=a[end];
a[end]=temp;
start++;
end--;
}
while(tt->next!=t)
{
tt->data=a[j];
j++;
tt=tt->next;
}
tt->data=a[j];
count=count-k;
i=0;
j=0;
}
return head;
}

最佳答案

所需的代码实际上是 6!行长

这是我的例子

#include <stdio.h>

void reverse(int *first, int *last)
{
int tmp;

while(first < last)
{
tmp = *first;
*first++ = *last;
*last-- = tmp;
}
}


void reverseFromPos(int *arr, size_t len, size_t pos)
{
reverse(&arr[0], &arr[pos - 1]);
reverse(&arr[pos], &arr[len -1]);
}

int main()
{
int arr[] = {1,2,3,4,5,6,7,8, 9};
size_t len;

reverseFromPos(arr, len =sizeof(arr) / sizeof(arr[0]), 4);
for(size_t index = 0; index < len; index++)
printf("%d ", arr[index]);
printf("\n");

return 0;
}

关于c - C 超出时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55429042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com