Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Innos avatar Innos 419 Точки
Best Answer

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-вания.
 

1
11/09/2016 12:07:57
Jean1 avatar Jean1 3 Точки

Грешката беше в "Contains"-а ,след като го оправих даде 100/100 .

Също така много благодаря за съветите за оптимизации.

0
annsta avatar annsta 305 Точки

Допускам, че непълните точки идват от кода за "shift". Ето моето решение.

0
Jean1 avatar Jean1 3 Точки

Не мисля ,че е там... Смених го с вашия варянт и нямаше промяна ... Пробвах и с други варянти но винаги 83/100 .

0
Nikola_Andreev avatar Nikola_Andreev 671 Точки

Аз мисля че е в 'contains' грешката и излишно си го усложнил, не знам защо. Пробвай само да принтираш това при ''contains": Console.WriteLine(numbers.IndexOf(index));

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.