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

简介: 🎈今天给大家带来的是算法练习,题目为"有序数组中出现次数超过25%的元素"。

说在前面

🎈今天给大家带来的是算法练习,题目为"有序数组中出现次数超过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%位置的元素是否相等,相等的话该元素即是答案,具体步骤如下:

  • 计算数组的25%数目

计算数目的时候我们向下取整就可以了,以为我们后面进行比较的是i和i+len,两元素的距离是len,也就是说这段区间中总共有len + 1个元素,len + 1就已经超过原数组长度的25%了。

let len = Math.floor(arr.length / 4);
  • 遍历判断元素与后25%位置的元素是否相等
for(let i = 0; i < arr.length - len - 1; i++){
    if(arr[i] == arr[len + i]) return arr[i];
}

AC代码

/**
 * @param {number[]} arr
 * @return {number}
 */
var findSpecialInteger = function(arr) {
    let len = Math.floor(arr.length / 4);
    for(let i = 0; i < arr.length - len - 1; i++){
        if(arr[i] == arr[len + i]) return arr[i];
    }
    return arr[arr.length - 1];
};

说在后面

🎉这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打打羽毛球🏸 ,平时也喜欢写些东西,既为自己记录📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解🙇,写错的地方望指出,定会认真改进😊,在此谢谢大家的支持,我们下文再见🙌。
目录
相关文章
|
SQL 存储 弹性计算
阿里云EMR 2.0:重新定义新一代开源大数据平台
本次分享主要介绍了阿里云E-MapReduce的开发历程,EMR 2.0的新特性、产品架构,以及EMR 2.0在平台体验、数据开发、资源形态及分析场景等方面的全面突破与创新,重新定义新一代开源大数据平台。
3276 0
阿里云EMR 2.0:重新定义新一代开源大数据平台
|
12月前
|
存储 人工智能 数据库
面向医疗场景的大模型 RAG 检索增强解决方案
本方案为您介绍,如何使用人工智能平台 PAI 构建面向医疗场景的大模型 RAG 检索增强解决方案。
|
存储 Java
抽象类与抽象方法
抽象类和抽象方法是面向对象编程中的重要概念。抽象类不能被实例化,主要用于定义子类的通用接口或行为。抽象方法是在抽象类中声明但未实现的方法,要求子类必须实现这些方法。这种方式有助于构建灵活且可扩展的代码结构。
341 2
|
Java 关系型数据库 Docker
docker打包部署spring boot应用(mysql+jar+Nginx)
docker打包部署spring boot应用(mysql+jar+Nginx)
|
资源调度 前端开发 JavaScript
安利一款基于canvas/svg的富文本编辑器-支持在线导出PDF、DOCX
高性能:利用Canvas和SVG进行图形和矢量图形的渲染,提供高性能的绘图能力。 可扩展性:Canvas-Editor是一个开源项目,支持通过插件机制扩展编辑器的功能,如DOCX、PDF导出、表格分页等。 丰富的文本编辑功能:支持多种文本编辑操作,如插入表格、分页、性能优化等。
1516 0
|
关系型数据库 MySQL Linux
Linux centos 6.5 - Mysql 安装 、卸载、修改密码、忘记密码 并异常处理
Linux centos 6.5 - Mysql 安装 、卸载、修改密码、忘记密码 并异常处理
499 0
|
运维 监控 安全
七载耕耘,全面盘点:Zabbix实战文章精华大全分享
在数字化转型的推动下,IT监控系统的重要性日益凸显。Zabbix作为开源监控领域的佼佼者,以其卓越的功能集成和灵活性赢得了全球企业的青睐。乐维社区由一群热爱技术的运维人员于七年前创立,现已成为国内最大的开源专业社区之一,汇聚了众多Zabbix用户的智慧与经验。社区提供了从基础安装到高级优化的全方位实战指导,并整理了“Zabbix实战文章精华大全”,涵盖基础知识、安全配置、性能优化等内容,为广大用户提供系统化的学习资源。欢迎下载使用,共同成长。
229 1
|
开发工具 Android开发 iOS开发
安卓与iOS开发环境深度对比
【10月更文挑战第1天】本文旨在探讨和分析安卓(Android)与苹果(iOS)两大主流移动操作系统在应用开发环境上的不同点。通过比较它们的开发工具、语言、用户体验设计、市场策略及生态系统,本文将为开发者提供一份详尽的参考指南,帮助他们做出更合适的开发平台选择。此外,文章还将探讨两大平台未来的发展趋势,以及这些趋势可能对开发者和用户产生的影响。
278 1
|
JSON 前端开发 JavaScript
JavaScript原生实现AJAX技术详解
【4月更文挑战第22天】本文详细介绍了使用原生JavaScript实现AJAX技术,包括基本原理和步骤。AJAX借助`XMLHttpRequest`对象实现异步通信,允许网页在不刷新情况下与服务器交换数据。文中提供示例展示了如何创建请求、设置回调函数、处理响应数据以及设置请求头和发送不同类型的数据。此外,还讨论了跨域问题及其解决方案,如CORS和JSONP。掌握这些基础知识对前端开发者至关重要,尽管现代框架提供了更高级的抽象。