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

【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;
    }
}

相关文章:

  • 利用雪花算法+Redis 自增 ID,生成订单号
  • java练习(28)
  • Java 大视界 -- 开源社区对 Java 大数据发展的推动与贡献(91)
  • AWS 前端自动化部署流程指南
  • Leetcode 526 Beautiful number
  • 用自己的数据训练yolov11目标检测
  • HTTP 响应头信息
  • Selenium+Pytest自动化测试框架实战
  • ad原理图元件透明问题
  • WWW 2025 | 中南、微软提出端到端双重动态推荐模型,释放LLM在序列推荐中的潜力...
  • 开源模型应用落地-LangGraph101-探索 LangGraph 短期记忆
  • 基于YOLO11深度学习的胃肠道息肉智能检测分割与诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
  • Java 基于SpringBoot+Vue 的旅游网站信息化管理系统设计与实现
  • JavaScript的诞生与进化
  • jetson orin nano super AI模型部署之路(一)deepseek r1模型部署
  • 【ProtoBuf】文件编写及序列化
  • C语言实现的常见排序算法
  • AI与大数据:双剑合璧的智能革命
  • 【学习资源】时间序列数据分析方法(2)-mWDN和AutoEncoder
  • 通过BingAPI爬取Bing半个月内壁纸
  • 小满:一庭栀子香
  • 顶刊论文现“飙脏话辱骂第二作者”,期刊回应:正积极调查
  • 2025年新季夏粮收购量将达到2000亿斤左右
  • 西安市长安区与航天基地区政合一管理,党政一把手分任基地党工委正副书记
  • 今晚油价下调,加满一箱油将省9元
  • 脱欧后首次英欧峰会召开前夕,双方却因渔业和青年流动议题僵住了