leetcode.169 求众数
给定一个大小为 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 求众数相关推荐
- LeetCode 169. 求众数(摩尔投票)
文章目录 1. 题目信息 2. 解题思路 3. 代码 3.1 排序 3.2 map计数 3.3 摩尔投票 1. 题目信息 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ ...
- Leetcode:169. 求众数
题目链接 求众数 题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: ...
- Leetcode 169. 求众数 解题思路及C++实现
解题思路: 因为int型数值只有32位,使用位运算的方法来解这道题时,就是要确定这个众数,在32位的位置上分别是0还是1. 由题意,因为众数的个数超过n/2,所以遍历数组nums后,如果某一位置上1的 ...
- LeetCode 169.求众数
题目描述: 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...
- java求众数_Java实现 LeetCode 229 求众数 II(二)
229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...
- LeetCode 229. 求众数 II(摩尔投票)
1. 题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...
- 领扣问题169. 求众数 python解决方案
欢迎和我一起学习啊! 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3 ...
- [leetcode]229. 求众数 II
解题思路:题目要求空间复杂度为O(1) 大于1/3的数不会超过2个,利用Boyer-Moore 投票算法找到数量最多的两个数,再检查下这俩个数的数量有没有超过1/3 class Solution {p ...
- Task8(简单)位运算:169.求众数
class Solution: def majorityElement(self, nums): majority_count = len(nums)//2 for num in nums: coun ...
最新文章
- 《你必须知道的495个C语言问题》知识笔记及补充
- 什么是SQL 注入?
- 按时间片轮转调度算法(C++实现)
- 程序员---不要对自己说“不可能”
- 挖洞经验:通过Vimeo的文件上传功能发现其SSRF漏洞
- Vue2.0用户权限控制解决方案
- JavaScript:网络请求工具库AjaxTool.js
- python导入dat数据_收好Python代码,导入项目数据不费力
- 八皇后--python代码
- Xilinx FPGA 编程技巧之常用时序约束详解
- Quartus II中关于IP核的破解
- 简体繁体转换JS(JavaScript)脚本
- 【RDMA】ibv 函数和相关问题|IBV_SEND_INLINE
- uni-app 地图拖拽后,回到我的位置
- PHP乘法表菜鸟教程,第二节 菜鸟教程的实例
- Ping IPv6在线测试检测 testipv6 加速镜像
- gb2312中的英文字母占几个字节?
- java-初始化数组
- 【PAT甲级】1021 Deepest Root (25 分)(暴力,DFS)
- 半乳糖修饰人血清白蛋白 Gal-HSA,Gal-PEG-HSA,单糖/多糖修饰蛋白等