当前位置:   article > 正文

华为OD面试手撕算法-数组元素TOP1

华为OD面试手撕算法-数组元素TOP1

 题目描述

查找一个数组中出现最多次数的值,如果存在相同的数量则输出较大的值。

解题思路

数据结构:哈希表

过程描述:在遍历数组过程中

1)使用map记录每个值出现的次数

2)使用maxCount,maxNum分别记录当前的最大次数和最大数值,有以下两种情况:

        ①当前元素出现次数 > maxCount : 更新maxCount为当前次数 & maxNum为当前元素

        ②当前元素出现次数 == maxCount && 当前元素 > maxNum: 更新maxNum为当前元素

遍历完成后,输出maxNum。

代码实现

  1. func Top1OfNums(nums []int) int {
  2. countMap := make(map[int]int)
  3. maxCount, maxNum := 0, -1<<31
  4. for _, num := range nums {
  5. countMap[num]++
  6. if countMap[num] > maxCount {
  7. maxCount = countMap[num]
  8. maxNum = num
  9. } else if countMap[num] == maxCount && num > maxNum {
  10. maxNum = num
  11. }
  12. }
  13. return maxNum
  14. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/482812
推荐阅读
相关标签
  

闽ICP备14008679号