Это моя программа для удаления дубликатов из отсортированного связанного списка. Я прохожу от головного узла связанного списка и использую переменную temp1, я проверяю, есть ли дубликаты одного и того же значения. Если мы находим данные, которые отличаются от текущего узла, то мы связываем их с текущим узлом, делаем его текущим узлом и повторяем процесс. Вот вопрос:- https://leetcode.com/problems/remove-duplicates-from-sorted-list/
ListNode* deleteDuplicates(ListNode* head) {
ListNode *curr=head,*temp1,*forw;
while(curr!=NULL)
{
//temp1 checks for next distinct element
temp1=curr->next;
while(temp1!=NULL)
{
//checking if the value at temp1 is distinct from current
if (temp1->val!=curr->val)
{
forw=temp1; //stored the distinct value in forw for reference to curr
break;
}
temp1=temp1->next;
}
curr->next=forw; // linked the distinct value to current
curr=curr->next;
}
return head;
}
Но программа выдает ошибку TLE (превышение лимита времени). Я выполнил пробный запуск кода, и у меня он работает нормально. Я думаю, что мне не хватает некоторого края. Любая помощь будет оценена?
@PaulMcKenzie TLE (превышен лимит времени) для базового тестового примера
Проклятие. У меня были деньги на «Самого маленького слона».
У вас есть UB для списка одного элемента, так как forw
затем используется неинициализированным.
(в вашем случае UB, вероятно, должен выполнять бесконечный цикл, поэтому TLE).
Спасибо за помощь начинающему программисту
Но программа выдает ошибку TLE -- ошибка установки двухстрочного элемента?