CP #38: Bit Manipulation Problemleri - 2
11. Majority Element Problem surada . Cozum Ilk aklima gelen naive yontem, her bir elemanin arrayda kac kere gectigini tutan bir dictionary kullanmak. Daha sonra da, n/2'den fazla degeri olan key'i geri dondurmek. Ise yariyor ama iyilestirilebilir. def majorityElement(self, nums: List[int]) -> int: # biraz daha sekil olsun diye defaultdict yerine direk Counter kullanilabilir. counts = collections.Counter(nums) # ve de en fazla count degerine sahip elemani dondurebilirz. # cunku problemde majority degerinin var olacagi garanti ediliyor return max(counts.keys(), key=counts.get) Baktigimizda, O(n) ile her bir elemani sayiyoruz. Toplamda O(n) time compl. ve de O(n) space compl. sahip bir cozum. Olaya baska bir acidan bakar isek, madem majority element, arraydaki toplam eleman sayisinin yarisindan fazla, bu array sort edilmis olsa idi kesinlikle en ortadaki eleman majority elemandan olurdu. Oyle ya, yarsinda...