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

【Leetcode 热题 100】1287. 有序数组中出现次数超过25%的元素

问题背景

给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25 % 25\% 25%
请你找到并返回这个整数。

数据约束

  • 1 ≤ a r r . l e n g t h ≤ 1 0 4 1 \le arr.length \le 10 ^ 4 1arr.length104
  • 0 ≤ a r r [ i ] ≤ 1 0 5 0 \le arr[i] \le 10 ^ 5 0arr[i]105

解题过程

自己做的时候是用哈希表统计次数的,因为没有额外要求,还算符合题意。
看了 灵神的分析 发现能用二分查找实现,确实很巧妙。

具体实现

class Solution {
    public int findSpecialInteger(int[] arr) {
        int n = arr.length / 4;
        for (int i : new int[]{n, 2 * n + 1}) {
            int cur = arr[i];
            if (binarySearch(arr, cur + 1) - binarySearch(arr, cur) > n) {
                return cur;
            }
        }
        return arr[3 * n + 2];
    }

    private int binarySearch(int[] nums, int target) {
        int left = 0;
        int right = nums.length;
        while (left < right) {
            int mid = left + ((right - left) >>> 1);
            if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return left;
    }
}

http://www.kler.cn/a/554823.html

相关文章:

  • QT-文件模块(ver6.7.2)还没写完
  • 蓝桥杯备赛1-5大写
  • PySpark检查两个DataFrame的数据是否一致
  • 跨语言语义理解与生成:多语言预训练方法及一致性优化策略
  • 蓝桥杯(B组)-每日一题(1093字符逆序)
  • c语言[递归]母牛的故事,有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
  • 【Axure高保真原型】拖动画图——画矩形案例
  • 基于PostGIS在PostgreSQL数据中实现按照百分比或面积将多边形分割为多个
  • 编写测试计划的六大要素是什么
  • 高效管理 React 状态和交互:我的自定义 Hooks 实践
  • Spring AI如何调用Function Calling
  • 在 Android 开发中如何接入 DeepSeek 聊天工具
  • conda简单命令
  • Hadoop-HA(高可用)机制
  • GPT2 模型训练
  • python中的Pillow 库安装后需要重启吗?
  • Linux系统上同时打印到物理打印机并生成PDF副本方法研究
  • 鸿蒙NEXT开发-网络管理
  • 微信小程序地图map全方位解析
  • Flask 发送邮件