[Programming Fundamentals] Arrays - Exercises - 10.Pairs by Difference
Здравейте,
Може ли малко помощ с тази задача. Решението ми гърми на 80 / 100 с грешка "недостатъчно време". Може ли идеи как да се оптимизира ?
Благодаря предварително!
Здравейте,
Може ли малко помощ с тази задача. Решението ми гърми на 80 / 100 с грешка "недостатъчно време". Може ли идеи как да се оптимизира ?
Благодаря предварително!
Според мен нямаш нужда от променливата int result, можеш просто да я запишеш в if-проверката и да си спестиш 1 ред. Също така можеш просто да вземеш абсолютната стойност с Math.Abs вместо да смяташ с Math.Min и Math.Max, мисля че е по-лесно за писане и по-трудно може да се допусне грешка. Също така вторият цикъл трябва да започва от i + 1.
Ето моето решение, доста е подобно на твоето, но с тези неща които споменах и дава 100/100
Можеш да въртиш втория цикъл от i+1, пак ще ти изкара всички двойки. Ето ти моето решение -> https://pastebin.com/NJZPiBkt
Благодаря, току що си видях двете грешки. :)
Nevermind, оправих си решението.
Тъкмо това щях да пиша ,да вържеш долния цикъл с горния +1.
https://pastebin.com/5wqZp4kP
Заповядай колега , проверката е малко по-различна , броиш 2 пъти.
Имах същия проблем и просто пробвах да не позлвам функцията Math.Abs. Вместо това вкарах втора проверка, като умножих специалното число (на което трябва да е равна разликта) с -1 :
if ((numbers[i] - numbers[j] == specialNumber)|| numbers[i] - numbers[j] == (specialNumber*(-1)))
{
pairsNumber++;
}
Това даде резултат и взех стоте точки. Явно Math.Abs метода, вкаран в цикъл с неизвестна дължина, товари излизшно програмата и ако става въпрос за проста проверка е добре да го избягваме (това е предположение, а не проверено знание).
Заповядай - https://pastebin.com/GsFhGjYx, в началото ми даваше 80/100, защото броях от j=0. В момента е от j = i + 1 и ми дава 100/100. :)
Благодаря колега, но отдавна съм решил задачата :D
Да, принципно няма нужда от променливата, но кода е по-четим так с нея. :)