Leetcode 169.求众数

LeetCode169——求众数 我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/majority-element/description/ 题目描述: 知识点:哈希表、分治算法、位运算、摩尔投票法 思路一:用哈希表记录各个数字出现的次数 时间复杂度和空间复杂度均是O(n)。 JAVA... 阅读详情

Leetcode 169.求众数

题目描述

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。

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

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

解题思路

方法1:众数是指大于 n/2 的元素,如果数组是一个排序数组,那么在 n/2+1的位置就是所求的众数

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int mid = nums.size()/2;
        return nums[mid];
    }
};

方法2:建立数组中元素:次数的哈希表,次数超过 n/2的就是众数

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        if (nums.size() == 1){
            return nums[0];
        }
        unordered_map<int, int> map;
        int mid = nums.size()/2;
        for (int i=0; i<nums.size(); i++){
            if(map.find(nums[i]) == map.end()){
                map[nums[i]] = 1;
            }
            else {
                map[nums[i]] += 1;
            }
        }

        int res = 0;
        int time = 0;
        for (auto& m:map){
            if (m.second > time){
                time = m.second;
                res = m.first;
            }
        }

        return res;
    }
};

方法三:由于众数是数组中出现次数大于 n/2 的数,所以如果我们把众数记为A,把众数出现的次数记为Acount,非众数记为B,出现的次数记为Bcount,所以使用O(n)遍历整个数组,Acount-Bcount肯定大于零,所以进一步的,可以假设数组开头的元素为目标数字tar,记count=1,如果tar和后面遍历的数字相等,count就加1,若是不相等的,count减1,并判断count是否等于0,若是等于零就需要改变tar等于当前下标下的元素,遍历完整个数组,count的值肯定大于零,等价于Acount-Bcount,就是把多个遍历转换成了一个变量进行。

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int tar = nums[0];
        int count = 1;
        for(int i=0; i<nums.size(); i++){
            if(tar == nums[i]){
                count++;
            }
            else{
                count--;
                if(count == 0){
                    tar = nums[i];
                    count = 1;
                }
            }
        }
        return tar;
    }
};

欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步
在这里插入图片描述

从传统扫描到SSN:Tessent数据包技术如何减少90%测试时间 本文深入探讨了Tessent流式扫描网络(SSN)如何通过其核心的数据包技术,彻底改变芯片测试范式。该技术将测试数据封装成标准化数据包,在共享总线上进行智能路由与分发,实现了动态带宽分配与核心独立测试,从而将复杂SoC(如AI芯片)的总体测试时间大幅削减90%,并显著提升测试灵活性与可扩展性。 阅读详情

相关推荐

ADB详细(从下载安装到灵活运用)

ADB(Android Debug Bridge)是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载ADB Kits。

LiuYong_01的博客 10万+

【LeetCode】求众数(四种方法)

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

Kanny 1万+

SPAD 单光子雪崩二极管

SPAD,全称为,是一种高灵敏度的光电探测器件,能够在非常低的光照水平下检测单个光子。SPAD在工作时,当一个光子被探测器吸收后,能够触发一个雪崩效应,产生一个可以被检测到的电信号。

qq_42786033的博客 1万+

【LeetCode】寻找众数(绝对众数、1/k众数) - Medium

1.已知给定的N个整数A[1…N]存在绝对众数,以最低的时空复杂度计算该绝对众数。 (若某众数出现次数多于n/2,则称作绝对众数), 【分析】 删除数组A中两个不同的数,绝对众数不变。 若两个数中有1个是绝对众数,则剩余的N-2个数中,绝 对众数仍然大于(N-2)/2; 若两个数中没有绝对众数,显然不影响绝对众数。算法描述:记m为候选绝对众数,出现次数为c,初始化为0。 遍历数组A:若c

It’s All Uphill From Here 7215

渗透测试实战—云渗透(AK/SK泄露)

渗透测试实战思路分享:getshell方法及横向移动方法,云安全(AK/SK泄露)

网安日记本的博客 4051

ABAP HANA BP主数据批导

SAPhana官方推荐的创建bp主数据的类是CL_MD_BP_MAINTAIN 客户的创建具体示例代码如下: DATA: LT_RETURN_MAP TYPE MDG_BS_BP_MSGMAP_T. DATA: LS_RETURN_MAP TYPE MDG_BS_BP_MSGMAP. DATA: LS_MESSAGE_MAP TYPE MDG_BS_BP_MSGMAP_KEY. DATA: LT_DATA TYPE CVIS_EI_EXTERN_.

IamRunjiang的博客 4143

leetcode求众数c++

求众数 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 解法1:排序的方法 class Solution { public: static bool cmp(const in...

陈乐乐的博客 555

EndNote X9 快速上手教程(毕业论文参考文献管理器)

EndNote X9 快速上手教程一、EndNote X9安装1.安装2 安装之后重要步骤二、第一次打开 EndNote三、参考文献引用1. 导入知网文献2. 参考文献引用四、常见问题1. 引用文献中出现%J的问题2 参考文献中出现et.al1 在文章中引用的编号的地方出现2 在参看文献列表里出现 一、EndNote X9安装 1.安装 打开文件夹 安装前,一定要读 #Readme.txt 文件 一定要把License.dat和ENX9Inst.msi放在同一文件夹,安装的时候会自动激活。 我的安装路

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2万+

leetcode169之寻找绝对众数

题目 给出一串数字,求出其中的众数的值,保证输入的数字数组拥有绝对众数。 绝对众数是指超过总的数字个数的一半的数字。 分析 这道题被归到分治算法当中去,应当使用分解为不同过得子问题的问题。 想了很久无法拆出子问题来求解。无法利用超过一半数量的数字这个条件。后来直接使用了map去统计数字的个数的方法。直到找到超多一半数量的数字返回。 还有一个方法是直接排序,然后找到其中中间的数字。 ...

windyear 423

多模型动态路由(Fusion):从“算力霸权”到“架构分权”的工程范式转型

多模型动态路由(Multi-Model Dynamic Routing)是指在多个大语言模型之间,根据请求特征、资源约束和业务目标,动态选择最优模型或模型组合的技术范式。传统网关擅长管理请求流量,但不理解“任务类型”。而AI路由层需要对每个请求进行语义理解、能力匹配和成本评估。从“算力霸权”到“架构分权”,这不是技术的线性演进,而是工程范式的根本转型。过去三年,开发者的核心能力是“选对模型”——在GPT、Claude、Gemini之间做出正确选择。

ZDQ58818的博客 74

红火蚁巢穴AI智能识别,提供方案与思路!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1045

leetcode求众数

哈希法 class Solution: def majorityElement(self, nums: List[int]) -> int: # 时间复杂度o(n) # 空间复杂度O(n) dict_num = {} for item in nums: if item in dict_num: dict_num[item] +=1 else: ..

ltochange的博客 415

基于YOLOv8的植物生长阶段识别系统设计与实现

本文详细介绍了一个基于YOLOv8深度学习模型的植物生长阶段识别系统,包含完整的数据集构建、模型训练、评估以及基于PyQt5的用户界面开发过程。系统能够自动识别植物在不同生长阶段(如发芽期、生长期、开花期、结果期等)的形态特征,为精准农业和智能种植提供技术支持。文章提供了完整的代码实现,并讨论了模型优化策略和实际应用场景。关键词:植物生长阶段识别、YOLOv8、目标检测、PyQt5、深度学习。

YOLO 466

【Java力扣算法】Leetcode 169 求众数

题目: 给定一个大小为n的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例1: 输入: [3,2,3] 输出: 3 示例2: 输入: [2,2,1,1,1,2,2] 输出: 2 思路: 解法一:运行时间7ms,时间复杂度O(nlogn) 先排序,判断如...

懂技术的猫 805

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LeetCode169:求众数

LeetCode169:求众数题目说明分析代码1 题目说明 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 分析 这里直接利用哈希映射,map结构,统计出现的数字和其次数计入...

坚果 222

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode 169.求众数

LeetCode 169.求众数 题目描述 思路求解 1、第一种思路很简单,直接对数组中的元素进行排序。因为众数的个数超过了半数,所以我们取排好序的数组的中间的元素一定是众数 2、第二种思路是将数组中的元素进行一一抵消,懵逼没关系,听我继续讲。 首先我们选取数组中任意的两个元素,如果它们不等,则删去,相等则继续。 直到数组中所剩的元素全是相同的,那么所剩元素一定是众数 还是,因为众数的个数超过了...

dddduaua的博客 244

LeetCode 169求众数

LeetCode 169求众数 题目 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/probl...

sakurasakura1996的博客 187

leetcode java 169. 求众数

leetcode java 169. 求众数 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/p...

Mr.魏 239

LeetCode 169 求众数

LeetCode 169 求众数 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/prob...

sdm12345的博客 176

leetcode-169-求众数(java|python)

title: leetcode-169-求众数(java|python) date: 2019-09-30 13:46:40 categories: leetcode tags: leetcode leetcode-169-求众数(java|python) 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给...

weixin_42479155的博客 233

LeetCode 169 求众数

169 求众数 腾讯精选50 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 方法一:暴力求解法 思路:用两个for循环,先将第一个数作为旗杆,对其后面的数都进行遍历,如果有重复...

从零学起 159

leetcode-169. 求众数

title: leetcode-169. 求众数 date: 2019-9-18 20:21:07 comments: true categories: “leetcode” tags: - leetcode 简单难度 - 分治法 169. 求众数 题目描述 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是...

梦否 378

LeetCode第169题求众数(Python)

LeetCode第169题求众数(Python)题目描述解题方法和思路直接统计利用哈希表记录出现次数分治算法*Boyer-Moore 投票算法* 题目描述 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊n/2⌋\lfloor n/2 \rfloor⌊n/2⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例1: 输入: [3,2,3] 输出: 3 ...

qq_21407487的博客 1213

LeetCode实战:169. 求众数

LeetCode实战:169. 求众数 题目 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 来源:力扣(LeetCode) 链接:https://leetcode-cn.com...

weixin_43250252的博客 210

Leetcode刷题(169. 求众数)

Leetcode刷题(169. 求众数)一.题目二.代码(C)三.提交记录四.备注 一.题目 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1:: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 二.代码(C) int m...

Umbraner的博客 179

【Leetcode】【简单】【169求众数】【JavaScript】

题目 169. 求众数 给定一个大小为n的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例1: 输入: [3,2,3] 输出: 3 示例2: 输入: [2,2,1,1,1,2,2] 输出: 2 众数(Mode)是统计学名词,在统计分布上具有明显集中趋...

banxuanyu1918的博客 176

leetcode-169 求众数

leetcode-169 求众数 题目描述: 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数 class Solution: def majorityElement(self, nums: List[int]) -> int: numsdic = dic...

diaoqian7700的博客 132
上一篇: leetcode 141.环形链表
下一篇: Leetcode 171.Excel表序列号
黑暗主宰
博客等级 码龄9年 72粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值