面试题 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 投票算法得到可能的主要元素或表名不存在主要元素,然后判断可能的主要元素是否是主要元素。


相关推荐
C蔡博士5 分钟前
最近点对问题(Closest Pair of Points)
java·python·算法
APIshop6 分钟前
Java调用亚马逊商品详情API接口完全指南
java·开发语言·python
不光头强13 分钟前
jwt学习
java·大数据·学习
凸头17 分钟前
美团Leaf发号器
java
SmartBrain23 分钟前
基于 Spring AI 构建多智能体协作系统(高级版)
java·人工智能·spring
艾莉丝努力练剑25 分钟前
文件描述符fd:跨进程共享机制
java·linux·运维·服务器·开发语言·c++
工藤新一¹27 分钟前
《操作系统》第一章(1)
java·服务器·前端
Han.miracle37 分钟前
Lombok 构造相关核心注解全解析
java·linux·算法
Java面试题总结37 分钟前
2026最新Java八股文(完整版)
java·开发语言·jvm·数据库·java面试·java八股文
6+h38 分钟前
【java】System类详解
java·开发语言·python