10. * Array Manipulator - 83 / 100
Здравейте , изкарвам 83 от 100 точки.Греши на (тест 3 и 11) .
Ако някой може да ми помогне и да каже от къде идва грешката.
Здравейте , изкарвам 83 от 100 точки.Греши на (тест 3 и 11) .
Ако някой може да ми помогне и да каже от къде идва грешката.
Shift-a е най-вероятно едната ти грешка както колегата каза, другата е в Contains-a:
int num = int.Parse(split[1]);
if (num >= 0 && num <= numbs.Count - 1)
Този If e абсолютно ненужен, наличието на даден елемент в листа не зависи по никакъв начин от броя елементи в листа.
Също така:
contain += i + "|";
string[] contSpl = contain.Split('|');
Тези 2 реда ще те доведат до много неприятности, защото в този сплит си забравил StringSplitOptions.RemoveEmptyEntries, така че string-a "1|" като се сплитне дава 2 елемента = "1" и "". По адекватният вариант е според мене веднага още в Contains командата да изпечатваш резултата на екрана вместо да чакаш до принт командата.
За грешките е това, ето ти няколко съвета за оптимизации обаче ако ти е интересно:
for (int i = int.Parse(split[1]); i < (split.Length - 2) + int.Parse(split[1]); i++)
Лоша идея е да имаш операции в условието на цикъл, понеже то ще се проверява при всяко завъртане на цикъла, това ще доведе до много излишни операции (всеки път ще изваждаш 2 от split.Length-a, parse-ваш split[1] и след това ги събираш). Тъй като резултата от условието ще е абсолютно еднакъв всеки път е по добре да извадиш смятането му преди цикъла и просто да сложиш резултата там.
За sumPairs-a бих ти препоръчал друг подход, RemoveAt е реално много скъпа команда, ако имаме 100 000 елемента в листа и искаме да махнем 2рият, то другите 99 998 след него трябва да се преместят с една позиция наляво. Понеже знаем че ще събираме всеки 2 елемента, по адекватно ще е да направим един нов лист и да записваме резултатите в него, след което просто да подменим старият лист с новият, по този начин може да избегнем всичките remove-вания.
Не мисля ,че е там... Смених го с вашия варянт и нямаше промяна ... Пробвах и с други варянти но винаги 83/100 .
Аз мисля че е в 'contains' грешката и излишно си го усложнил, не знам защо. Пробвай само да принтираш това при ''contains": Console.WriteLine(numbers.IndexOf(index));
Грешката беше в "Contains"-а ,след като го оправих даде 100/100 .
Също така много благодаря за съветите за оптимизации.