面试题 17.10 主要元素

​​题目来源:

leetcode题目,网址:面试题 17.10. 主要元素 - 力扣(LeetCode)

解题思路:

首先,顺序遍历数组,将不同的数字消去,最后留下的数字若计数小于等于 0,则不存在主要元素。然后遍历数组,对最后留下的数字计数,判断其是否是主要元素。

解题代码:

复制代码
class Solution {
    public int majorityElement(int[] nums) {
        int res=0;
        int cnt=0;
        for(int num:nums){
            if(num==res){
                cnt++;
            }else{
                cnt--;
                if(cnt<0){
                    res=num;
                    cnt=1;
                }
            }
        }
        if(cnt<=0){
            return -1;
        }
        
        int count=0;
        for(int num:nums){
            if(num==res){
                count++;
            }
        }
        return count>nums.length/2?res:-1;
    }
}
复制代码

总结:

官方题解也是一样的思路。通过 Boyer-Moore 投票算法得到可能的主要元素或表名不存在主要元素,然后判断可能的主要元素是否是主要元素。


相关推荐
云烟成雨TD3 分钟前
Spring AI Alibaba 1.x 系列【48】状态图编译配置类:CompileConfig 源码解析
java·人工智能·spring
贫民窟的勇敢爷们1 小时前
Java 与 Python 如何选型与融合
java·开发语言·python
流年如夢1 小时前
单链表Ⅲ(LeetCode)
数据结构·算法·leetcode·职场和发展
小宇的天下1 小时前
Calibre DESIGNrev 单元(Cell)操作核心指南
java·前端·javascript
阿苟1 小时前
spring重点详解
java·后端·面试
Stream_Silver2 小时前
【JNA实战:Java无缝调用Windows API模拟键盘输入】
java·开发语言·windows
Sam_Deep_Thinking2 小时前
为什么选微服务而不是动态扩容单体
java·jvm·微服务
焦糖玛奇朵婷2 小时前
回收小程序开发案例分享
java·开发语言
成旭先生2 小时前
【2026年可用】企业信息查询API接口
java·大数据·模糊查询·企业信息
l软件定制开发工作室2 小时前
Spring开发系列教程(35)——使用Actuator
java·后端·spring