【interview17.10】 主要元素:详解
生活随笔
收集整理的這篇文章主要介紹了
【interview17.10】 主要元素:详解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
interview17.10 主要元素
1.題目
數(shù)組中占比超過(guò)一半的元素稱之為主要元素。給定一個(gè)整數(shù)數(shù)組,找到它的主要元素。若沒(méi)有,返回-1。
2.算法
3.排序算法 + 計(jì)數(shù)器
解題思路:從題干分析,我們需要找到數(shù)組中數(shù)量占比多于一半(numsSize % 2 + 1)的數(shù)字。由于數(shù)字是隨機(jī)的并且取值范圍較大,因此不適合使用桶計(jì)數(shù)。可以先將數(shù)組進(jìn)行排序,然后遍歷一遍數(shù)組,統(tǒng)計(jì)每種數(shù)字的數(shù)量,如果數(shù)量多于一半,就輸出當(dāng)前的數(shù)據(jù)即可。
步驟1:使用qsort排序。初始化一個(gè)統(tǒng)計(jì)變量count
步驟2:從數(shù)組左端開(kāi)始遍歷,檢查當(dāng)前數(shù)字nums[i]與上一個(gè)數(shù)字nums[i - 1]之間的關(guān)系
步驟3:若nums[i] != nums[i - 1]。統(tǒng)計(jì)count是否多于一半,如果多于一半則輸出nums[i - 1]。如果少于一半,則count清為1。
步驟4:若nums[i] == nums[i - 1]。count自增1。
int sort_up(const void *a, const void *b) {return *(int *)a - *(int *)b; }int majorityElement(int* nums, int numsSize){if (numsSize == 1)return *nums;int count = 1;qsort(nums, numsSize, sizeof(int), sort_up);for(int i = 1; i < numsSize; i++) {if (nums[i] == nums[i - 1])count++;elsecount = 1;if (count > numsSize % 2)return nums[i];}return -1; }總結(jié)
以上是生活随笔為你收集整理的【interview17.10】 主要元素:详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c 调用mysql密码为空_C语言连My
- 下一篇: java比较时间的先后utc时间,日期、