zoukankan      html  css  js  c++  java
  • leetcode刷题笔记一百六十九题 多数元素

    leetcode刷题笔记一百六十九题 多数元素

    源地址:169. 多数元素

    问题描述:

    给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

    你可以假设数组是非空的,并且给定的数组总是存在多数元素。

    示例 1:

    输入: [3,2,3]
    输出: 3
    示例 2:

    输入: [2,2,1,1,1,2,2]
    输出: 2

    //使用哈希表记录已访问的多数情况
    //若计数超过半数,直接返回 否则对相应num进行更新
    object Solution {
        def majorityElement(nums: Array[Int]): Int = {
            import scala.collection.mutable
            val hp = new mutable.HashMap[Int, Int]()
            var cnt = 0
            for (num <- nums) {
                if (hp.contains(num)) cnt = hp(num) + 1
                else cnt = 1
                if (cnt > nums.length/2) return num
                else hp.put(num, cnt)
            }
            return -1
        }
    }
    
    //对整个nums进行排序,根据多数的定义直接返回nums.length/2的值
    object Solution {
        def majorityElement(nums: Array[Int]): Int = {
            val sortedNums  = nums.sorted
            return sortedNums(nums.length/2)
        }
    }
    
    //摩尔投票法
    //候选人初始化为nums(0), 票数count为1
    //若候选人与投票相同,则count += 1, 否则 count -= 1
    //当票数为0时,更新候选人,并将票数count重置为1
    object Solution {
        def majorityElement(nums: Array[Int]): Int = {
            var major = nums(0)
            var count = 1
            for (i <- 1 to nums.length - 1){
                if (major == nums(i)) count += 1
                else count -= 1
                if (count == 0) {
                    major = nums(i)
                    count = 1
                }
            }
            return major
        }
    }
    
  • 相关阅读:
    okHttp源码解析------待续
    AS: Unsupported method: AndroidProject.getPluginGeneration().
    vue项目根据不同环境调用不同请求地址
    文字跑马灯(无缝衔接) CSS+JS完美实现
    data 和 computed 的区别
    ES6解构赋值
    flex布局
    token验证
    vue组件传值
    vue钩子函数
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13628485.html
Copyright © 2011-2022 走看看