Здравейте, колеги. От един ден се мъча със задача Repeating Numbers от Mock exam 3.
Repeating Numbers
Write a program that accepts an array of integers and returns the one that occurs the most times. If there are two numbers that occur the same amount of times, return the smaller of the two.
Input
Read from the standard input;
The number N is on the first line;
An integer between 1 and 10 is written on each of the next N lines;
The input data will always be valid and in the format described. There is no need to check it explicitly;
Output
Print to the standard output;
On the only output line you must print the number that occurs the most;
Constraints
The number N is a positive integer between 1 and 100 000, inclusive;
The list of numbers consists of positive integers between 1 and 10, inclusive;
Input
4
1
3
3
7
Output
3
В judge ми дава 20/100. Ще се радвам някой ако може да ми даде някакви насоки с какви други инпути да пробвам и да видя къде се чупи.
И също така на изпита ако ми се случи нещо подобно, как да процедирам?
Здравей, пробвай дали този алгоритъм ще ти е по-лесен:
сортирай array-a (ще стане нещо като 1,1,1,3,3,3,3,4,6,8,8,8,8)
пази:
targetNumber (това, което ще принтираш накрая),
maxCount (колко пъти се повтаря числото,което ще принтираш накрая),
currentNumber(текущото ти число в loop-a),
currentCount (колко пъти е повторено текущото в Loop-a)
→ тези ще ги ъпдейтваш докато циклиш: докато се повтаря едно и също число, ъпдейтваш му counter-a. Когато попаднеш на ново число, сравняваш currentCount с maxCount. Ако currentCount > maxCount, вземаш новите стойности и ги слагаш за maxCount и targetNumber. Ако currentCount = maxCount, сравняваш currentNumber и targetNumber и вземаш по-малкото (по условие).
с примерния array горе, би трябвало да принтираш 3.
Суперр. Много ти благодаря. Доста по-разбираемо стана. Откарах ги до 80 точки в judge, но все още ми гърмят 2 кейса - 4 и 5. Някаква друга идея с какви инпути да опитам.
Здравей, много набързо прегледах кода, тази валидация накрая не ми се изясни мн, пробвай с инпут
3
1
2
3
Трябва да принтираш 1, а ти принтираш 0, откъде е тая 0
п.п. когато пазиш някакви стойности на нещо (примерно targetNumber), не ги оставяй да са 0 / int_min/max value и тн, ами винаги им присвоявай първото срещнато число в кода, за да не стават подобни грешки Ако логиката е вярна, те така или иначе ще се ъпдейтнат коректно по-нататък при изпълнението на кода.