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


相关推荐
伍一512 分钟前
星云ERP免编译安装包分享,可直接运行,附完整程序包下载地址
java
逆境不可逃7 分钟前
LeetCode 热题 100 之 279. 完全平方数 322. 零钱兑换 139. 单词拆分 300. 最长递增子序列
java·算法·leetcode·职场和发展
shamalee8 分钟前
Spring Security 新版本配置
java·后端·spring
不光头强16 分钟前
Java中的异常
java·开发语言
毕设源码-赖学姐16 分钟前
【开题答辩全过程】以 高校资源共享平台的设计与实现 为例,包含答辩的问题和答案
java
shamalee19 分钟前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
aisifang0020 分钟前
MS SQL Server partition by 函数实战三 成绩排名
java
C++chaofan29 分钟前
JUC 并发编程:对可见性、有序性与 volatile的理解
java·开发语言·spring·java-ee·juc·synchronized·
无名-CODING31 分钟前
Tomcat 底层核心知识点字典(面试必备)
java·面试·tomcat
XiYang-DING34 分钟前
【Java SE】双亲委派模型
java·开发语言