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

LeetCode 1287.有序数组中出现次数超过25%的元素

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

请你找到并返回这个整数

示例:

输入:arr = [1,2,2,6,6,6,6,7,10]
输出:6

提示:

1 <= arr.length <= 10^4
0 <= arr[i] <= 10^5

由于数组是有序的,我们只需检查25%位置的元素是否是答案即可,我们可以二分查找25%位置的元素的第一次出现的位置,然后看是否占比25%即可:

class Solution {
public:int findSpecialInteger(vector<int>& arr) {int gap = arr.size() / 4 + 1;for (int i = 1; i < 3; ++i) {// 25%位置的元素首次出现的下标int lIdx = lowerBound(arr, arr[gap * i - 1]);// 往后数25%的下标,看是否还是该元素值if (arr[lIdx + gap - 1] == arr[lIdx]) {return arr[lIdx];}}return arr[gap * 3 - 1];}int lowerBound(vector<int> &arr, int target) {int l = 0;int r = arr.size() - 1;int ans = arr.size();while (l <= r) {int m = l + (r - l) / 2;if (arr[m] >= target) {ans = m;r = m - 1;} else {l = m + 1;}}return ans;}
};

如果arr的长度为n,则此算法时间复杂度为O(logn),空间复杂度为O(1)。

http://www.dtcms.com/a/502963.html

相关文章:

  • 递归-50.Pow(x,n)-力扣(LeetCode)
  • Flutter 并发编程全解:从零掌握 Isolate
  • 跨网络互联技术(①Singbox Core-Flutter-Android)
  • 移动端网站的重要性做一款推荐类的网站
  • 用div做网站中间部分做网站是干啥的
  • 【思维导图SimpleMind Pro】SimpleMind Pro——轻量级思维导图软件完全指南:轻量专业,让思维高效可视化
  • jlink烧入软件的使用
  • 03-流程控制语句-教程
  • 【mqtt参数上云和小程序开发】【第5期】hcsr04超声波测距模块调试完成
  • 【STM32笔记】:P03 ISP 一键下载电路详解
  • 江苏省网站建设哪家好php做的购物网站
  • 常见的位运算的总结
  • CSRF(跨站请求伪造)攻击详解:原理、途径与防范
  • 【C++】使用双指针算法习题
  • 全能型 AI 模型新标杆 Qwen2.5-Omni
  • 建设银行佛山分行网站wordpress插件 评分
  • 大数据计算引擎-从源码看Spark AQE对于倾斜的处理
  • 前端基础知识---Ajax
  • 数据结构——多维数组的存储
  • 编译django做的网站网站制作 价格
  • 破解商家客服困局:真人工AI回复如何成为转型核心
  • 【Qt开发】多元素类控件(二)-> QTableWidget
  • 如何建设一个优秀的电商网站自己怎么创建微信公众号
  • 【成长纪实】Flutter中Dart 与Harmony中 ArkTS 异步编程对比:从 Future 到 Promise
  • ARMv7-A 移植 FreeRTOS 栈帧初始化
  • ARMv7-A 移植 FreeRTOS 中断和临界区管理
  • STM32中PB4引脚作普通GPIO使用的一个小问题
  • 网站怎么看哪个公司网站建设海口网站开发制作
  • 【踩坑记录】从“正在还原所需的工具包”说起:一次 .NET 工程包还原失败的完整排查实录
  • 阳山做网站什么网站做视频