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


相关推荐
不会写DN2 小时前
Go日志库工程选型与逃逸分析评测报告
java·服务器·golang
SL_staff3 小时前
合规性折旧:当知识资产因主权缺位在审计中‘功能性清零’
java·设计模式·开源
wzq11_6663 小时前
Kubernetes集群——基础篇(基础知识与搭建步骤一遍过!!!)
java·容器·kubernetes
Dreams_l3 小时前
基于SpringBoot实现的抽奖系统(一)
java·spring boot·后端
落魄实习生3 小时前
Agent Scope Java 2.x 系列【1】核心架构
java·开发语言·架构
优质酸酸乳3 小时前
力扣100题之21合并两个有序链表
算法·leetcode·链表
鬼手点金3 小时前
Claude Code示范案例-常用快捷命令
java·服务器·前端·计算机视觉·前向传播
温暖小土3 小时前
Spring AI 接入通义千问向量模型
java·人工智能·spring
旖旎夜光3 小时前
LeetCode 137 : 只出现一次的数字 II(位运算) —— 题解
c++·笔记·学习·算法·leetcode·力控
Sarvartha3 小时前
数组基础知识
java·开发语言