Loading...
shady_obeyd avatar shady_obeyd 50 Точки

[Programming Fundamentals] Arrays - Exercises - 10.Pairs by Difference

Здравейте, 

Може ли малко помощ с тази задача. Решението ми гърми на 80 / 100 с грешка "недостатъчно време". Може ли идеи как да се оптимизира ?

Благодаря предварително!

Тагове:
0
Programming Fundamentals 10/10/2017 14:00:54
SlavyanaChonovska avatar SlavyanaChonovska 48 Точки

Според мен нямаш нужда от променливата int result, можеш просто да я запишеш в if-проверката и да си спестиш 1 ред. Също така можеш просто да вземеш абсолютната стойност с Math.Abs вместо да смяташ с Math.Min и Math.Max, мисля че е по-лесно за писане и по-трудно може да се допусне грешка. Също така вторият цикъл трябва да започва от i + 1.

Ето моето решение, доста е подобно на твоето, но с тези неща които споменах и дава 100/100

0
10/10/2017 14:09:09
shady_obeyd avatar shady_obeyd 50 Точки

Да, принципно няма нужда от променливата, но кода е по-четим так с нея. :)

0
k.sevov avatar k.sevov 1077 Точки

Можеш да въртиш втория цикъл от i+1, пак ще ти изкара всички двойки. Ето ти моето решение -> https://pastebin.com/NJZPiBkt

0
shady_obeyd avatar shady_obeyd 50 Точки

Благодаря, току що си видях двете грешки. :)

0
Sleya avatar Sleya 26 Точки

Тъкмо това щях да пиша ,да вържеш долния цикъл с горния +1.

0
Sleya avatar Sleya 26 Точки

https://pastebin.com/5wqZp4kP

Заповядай колега , проверката е малко по-различна , броиш 2 пъти.

0
Samuil_Dechev avatar Samuil_Dechev 35 Точки

Имах същия проблем и просто пробвах да не позлвам функцията Math.Abs. Вместо това вкарах втора проверка, като умножих специалното число (на което трябва да е равна разликта) с -1 : 

 if ((numbers[i] - numbers[j] == specialNumber)|| numbers[i] - numbers[j] == (specialNumber*(-1)))
                {
                    pairsNumber++;
                }

 

Това даде резултат и взех стоте точки. Явно Math.Abs метода, вкаран в цикъл с неизвестна дължина, товари излизшно програмата и ако става въпрос за проста проверка е добре да го избягваме (това е предположение, а не проверено знание).

0
nikolaybelobradov avatar nikolaybelobradov 4 Точки

Заповядай - https://pastebin.com/GsFhGjYx, в началото ми даваше 80/100, защото броях от j=0. В момента е от j = i + 1 и ми дава 100/100. :)

1
shady_obeyd avatar shady_obeyd 50 Точки

Благодаря колега, но отдавна съм решил задачата :D

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