当前位置: 首页 > news >正文

Day16:数组中出现次数超过一半的数字

仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id

示例 1:

输入:stock = [6, 1, 3, 1, 1, 1]
输出:1

LCR 158. 库存管理 II - 力扣(LeetCode) 

用一个桶,遍历数组,出现一次就++,大于1/2说明只可能有一个数字,每次++的时候检查一下是否超了,如果超了,直接return就行。

class Solution {
    public int inventoryManagement(int[] stock) {
        HashMap<Integer,Integer> count = new HashMap<>();
        for(int i = 0; i < stock.length; i++){
            count.put(stock[i],count.getOrDefault(stock[i],0) + 1);
        }
        // 找到频率超过一半的元素
        for (int i = 0; i < stock.length; i++) {
            if (count.get(stock[i]) > stock.length / 2) {
                return stock[i];
            }
        }
        return 0;
    }
}

还有一种效率更高的方法:摩尔投票法

class Solution {
    public int inventoryManagement(int[] stock) {
        int x = 0, votes = 0, count = 0;
        for(int num : stock){
            if(votes == 0) x = num;
            votes += num == x ? 1 : -1;
        }
        // 验证 x 是否为众数
        for(int num : stock)
            if(num == x) count++;
        return count > stock.length / 2 ? x : 0; // 当无众数时返回 0
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/70323.html

相关文章:

  • harmonyOS NEXT开发与前端开发深度对比分析
  • C语言数据类型取值范围及格式化符号
  • NVMe集群:加速数据处理
  • 【C语言】自定义类型:结构体,联合,枚举(下)
  • python函数式编程
  • 【教程】继承中的访问控制 C++
  • C 语 言 --- 三 子 棋
  • 汽车保养记录用什么软件记录,汽车维修记录查询系统,佳易王汽车保养维护服务记录查询管理系统操作教程
  • 【免费】1949-2020年各省人均GDP数据
  • 2019年12月全国POI数据分享(同源历史POI分享系列)
  • Linux 蓝牙音频软件栈实现分析
  • 单引号与双引号在不同编程语言中的使用与支持
  • 【菜鸟飞】在vsCode中安装python的ollama包出错的问题
  • 高频面试题(含笔试高频算法整理)基本总结回顾21
  • C语言【内存函数】详解
  • 对比学习(Contrastive Learning)
  • 浏览器指纹——跨境业务
  • 机器人ROS学习:Ubuntu22.04安装ROS2和Moveit2实现运动规划
  • 【黑马点评|项目】万字总结(上)
  • 将Dify文档中的CSV数据提取并用ECharts可视化工具开发指南
  • 甲骨文找回二次验证的方法(超简单)
  • Java 集合遍历过程中修改数据触发 Fail-Fast 机制 ,导致报ConcurrentModificationException异常
  • 电脑实用小工具推荐--屏幕录制软件Bandicam(班迪录屏)
  • ECharts中Map(地图)样式配置、渐变色生成
  • C语言交换两数
  • Dijkstra算法
  • 【蓝桥】模拟
  • Day16:字符串的排列
  • eBPF 实时捕获键盘输入
  • Day2 导论 之 「存储器,IO,微机工作原理」