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


相关推荐
qq_124987075337 分钟前
基于Srpingboot心晴疗愈社平台的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·spring·microsoft·毕业设计·计算机毕业设计
大爱编程♡38 分钟前
SpringBoot统一功能处理
java·spring boot·后端
leiming61 小时前
FreeRTOS 的任务与 Linux
java·开发语言
小马爱记录1 小时前
枚举策略驱动
java
马猴烧酒.2 小时前
【JAVA数据传输】Java 数据传输与转换详解笔记
java·数据库·笔记·tomcat·mybatis
爱编码的傅同学2 小时前
【常见锁的概念】死锁的产生与避免
java·开发语言
圣保罗的大教堂2 小时前
leetcode 3650. 边反转的最小路径总成本 中等
leetcode
rabbit_pro2 小时前
SpringBoot3使用PostGis+GeoTools整合MybatisPlus
java·spring
望眼欲穿的程序猿2 小时前
Ai8051U+DHT11温湿度!
java·开发语言
一只大马猴呀2 小时前
IntelliJ IDEA 中启动项目不显示端口号
java·ide·intellij-idea