Появляется обсуждать несколько больше, чем число п / 2, если такое число существует, то число вхождений числа раз больше, чем сумма числа появления других.
В массиве А, мы определяем два набора a1, a2 данных. А1 представляет собой набор число вхождений числа в более чем п / 2, а2 число, установленное для остальной части композиции. Для массива
А элементы а, б, предполагается, что не равна В, то есть два случая, а именно: часть a1, б принадлежат А2; принадлежность а2, Ь принадлежат а2. В обоих случаях, например,
Если а, б удаляется из массива A, размер набора по-прежнему больше, чем a1 и a2. Согласно этой идее, мы имеем следующий код:
ИНТ м; INT COUNT = 0 ; для (Auto NUM: в Nums) {
// начальный момент времени 1. IF ( 0 == COUNT) { т = NUM; ++ COUNT; } еще {
// если мы добавим равный не равен, при удалении IF (т == NUM) ++ COUNT; в остальном - COUNT; }
}
Затем найти число раз больше, чем на 1/3, мы представляем не более двух таких чисел п, т. Или же отношение п м, а оставшаяся часть, которая представляет собой любое из 1: 1, которое больше, чем число переходов ради 1/2. Код выглядит следующим образом:
INT т, п; // наличие до двух раз больше , чем третий элемент появляется INT см & л, CN; // соответствующая т и п являются статистически для (Auto NUM: в НУМС) { ЕСЛИ (см & л == 0 || NUM = = м) { т = NUM; ++ см & л; } еще ЕСЛИ (CN == 0 || NUM == п-) { п- = NUM; ++ CN; } еще { - см & л; - CN; } }
Может быть просто понял, как если бы не более чем 1/3 от той части данных, чтобы удалить номер, п, т, соответствующий каждый набор данных, чтобы удалить номер, п, т, соответствующий набор данных размера больше, чем третье условие она не изменится.