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


相关推荐
磊 子8 分钟前
类模板与派生1
java·开发语言·c++
:12111 分钟前
java面试基础2
java·开发语言·面试
云烟成雨TD15 分钟前
Spring AI Alibaba 1.x 系列【30】Nacos Skill Registry 的底层设计与实现
java·人工智能·spring
北顾笙98015 分钟前
day28-数据结构力扣
数据结构·算法·leetcode
北辰屿风18 分钟前
宝塔部署tomcat项目,nginx负载均衡代理访问报错404问题
java·tomcat
米粒119 分钟前
力扣算法刷题 Day 48(单调栈)
算法·leetcode·职场和发展
鱼鳞_29 分钟前
Java学习笔记_Day37(网络编程)
java·网络·笔记·学习
Metaphor69236 分钟前
使用 Python 合并 PDF 文件
java·python·pdf
我是无敌小恐龙43 分钟前
Java SE 零基础入门Day03 数组核心详解(定义+内存+遍历+算法+实战案例)
java·开发语言·数据结构·人工智能·算法·aigc·动态规划