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


相关推荐
Liangwei Lin7 小时前
LeetCode 287. 寻找重复数
算法·leetcode·职场和发展
luck_bor7 小时前
集合进阶(Collections Set List)
java
敲敲千反田7 小时前
Spring AI
java·人工智能·spring
拽着尾巴的鱼儿7 小时前
spring 动态代理
java·后端·spring
gf13211117 小时前
python_【更新已发送的消息卡片】
java·前端·python
WL_Aurora7 小时前
Java字符输入全攻略
java·开发语言
Hello.Reader8 小时前
算法基础(十三)——随机算法为什么有时主动引入随机性
java·数据库·算法
likerhood8 小时前
ConcurrentHashMap底层数据结构和面试常见问题
java·数据结构·面试·hashmap
云烟成雨TD8 小时前
Spring AI Alibaba 1.x 系列【52】Interrupts 中断机制:案例演示
java·人工智能·spring
老鱼说AI8 小时前
现代 LangChain 开发指南:从 LCEL 原理到企业级 RAG 与 Agent 实战
java·开发语言·人工智能·深度学习·神经网络·算法·机器学习