【力扣题解】1287. 有序数组中出现次数超过25%的元素
😊博主目前也在学习,有错误欢迎指正😊
🌈保持热爱 奔赴星海🌈
文章目录
-
- 一、题目
-
- 1、题目描述
- 2、基础框架
- 3、原题链接
- 二、解题报告
-
- 1、思路分析
- 2、代码详解
- 三、本题知识
一、题目
1、题目描述
给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。请你找到并返回这个整数
2、基础框架
- Java版本框架代码如下:
class Solution { public int findSpecialInteger(int[] arr) { }}
3、原题链接
1287. 有序数组中出现次数超过25%的元素
二、解题报告
1、思路分析
(1)遍历arr数组,在遍历的同时统计arr[i]的个数。cur用于记录上一个元素的值。
(2)如果cur和arr[i]不相等,更新cur,重新计数。
(3)若发现cur出现次数超过数组元素总数的 25%,则退出循环。
2、代码详解
class Solution { public int findSpecialInteger(int[] arr) { int cur = arr[0]; int len = arr.length/4; int nums = 1; for(int i = 1;i < arr.length;i++) { if(cur == arr[i]) { nums++; if(nums > len) { break; } }else { nums = 1; cur = arr[i]; } } return cur; }}
三、本题知识
遍历