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

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

// 示例1
输入: [3,2,3]
输出: 3// 示例2
输入: [2,2,1,1,1,2,2]
输出: 2
复制代码

普通解法1, 借助对象

/*** @param {number[]} nums* @return {number}*/
var majorityElement = function(nums) {let obj = {}for(let i of nums) {if (obj['key' + i]) {obj['key' + i]++} else {obj['key' + i] = 1}}let max = 0let value = nullfor(let key in obj) {if (obj[key] > max) {max = obj[key]value = key.split('key')[1]}}return value
};
复制代码

普通解法2,使用sort

/*** @param {number[]} nums* @return {number}*/
var majorityElement = function(nums) {let arr = nums.sort()let index = Math.floor(arr.length / 2)return arr[index]
};
复制代码

最优解

摩尔投票问题: 找出一组数字序列中出现次数大于总数1/2的数字(并且假设这个数字一定存在)。显然这个数字只可能有一个。摩尔投票算法是基于这个事实:每次从序列里选择两个不相同的数字删除掉(或称为“抵消”),最后剩下一个数字或几个相同的数字,就是出现次数大于总数一半的那个。

/*** @param {number[]} nums* @return {number}*/let majorityElement = function(nums) {let count = 0;let candidate = 0;for (let num of nums) {if (count === 0) {candidate = num;} count = candidate === num ? count + 1 : count - 1;}return candidate;
};
复制代码

转载于:https://juejin.im/post/5c7bc23fe51d454e4f6bf42e

leetcode.169 求众数相关推荐

  1. LeetCode 169. 求众数(摩尔投票)

    文章目录 1. 题目信息 2. 解题思路 3. 代码 3.1 排序 3.2 map计数 3.3 摩尔投票 1. 题目信息 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ ...

  2. Leetcode:169. 求众数

    题目链接 求众数 题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: ...

  3. Leetcode 169. 求众数 解题思路及C++实现

    解题思路: 因为int型数值只有32位,使用位运算的方法来解这道题时,就是要确定这个众数,在32位的位置上分别是0还是1. 由题意,因为众数的个数超过n/2,所以遍历数组nums后,如果某一位置上1的 ...

  4. LeetCode 169.求众数

    题目描述: 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...

  5. java求众数_Java实现 LeetCode 229 求众数 II(二)

    229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...

  6. LeetCode 229. 求众数 II(摩尔投票)

    1. 题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...

  7. 领扣问题169. 求众数 python解决方案

    欢迎和我一起学习啊! 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3 ...

  8. [leetcode]229. 求众数 II

    解题思路:题目要求空间复杂度为O(1) 大于1/3的数不会超过2个,利用Boyer-Moore 投票算法找到数量最多的两个数,再检查下这俩个数的数量有没有超过1/3 class Solution {p ...

  9. Task8(简单)位运算:169.求众数

    class Solution: def majorityElement(self, nums): majority_count = len(nums)//2 for num in nums: coun ...

最新文章

  1. 《你必须知道的495个C语言问题》知识笔记及补充
  2. 什么是SQL 注入?
  3. 按时间片轮转调度算法(C++实现)
  4. 程序员---不要对自己说“不可能”
  5. 挖洞经验:通过Vimeo的文件上传功能发现其SSRF漏洞
  6. Vue2.0用户权限控制解决方案
  7. JavaScript:网络请求工具库AjaxTool.js
  8. python导入dat数据_收好Python代码,导入项目数据不费力
  9. 八皇后--python代码
  10. Xilinx FPGA 编程技巧之常用时序约束详解
  11. Quartus II中关于IP核的破解
  12. 简体繁体转换JS(JavaScript)脚本
  13. 【RDMA】ibv 函数和相关问题|IBV_SEND_INLINE
  14. uni-app 地图拖拽后,回到我的位置
  15. PHP乘法表菜鸟教程,第二节 菜鸟教程的实例
  16. Ping IPv6在线测试检测 testipv6 加速镜像
  17. gb2312中的英文字母占几个字节?
  18. java-初始化数组
  19. 【PAT甲级】1021 Deepest Root (25 分)(暴力,DFS)
  20. 半乳糖修饰人血清白蛋白 Gal-HSA,Gal-PEG-HSA,单糖/多糖修饰蛋白等

热门文章

  1. Spring4-@Configuration的使用
  2. 【UR #4】元旦三侠的游戏(博弈论+记忆化)
  3. HTML5 localStorage本地儲存
  4. debian 9系统安装配置iptables
  5. Vue+Element前端导入导出Excel
  6. 项目中常用的git指令
  7. hihoCoder-1828 2018亚洲区预选赛北京赛站网络赛 A.Saving Tang Monk II BFS
  8. 深刻理解Vue中的组件
  9. Linux下 su命令与su - 命令的区别
  10. C#函数式编程之可选值