> 文档中心 > 【力扣题解】1287. 有序数组中出现次数超过25%的元素

【力扣题解】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;    }}

三、本题知识

遍历

ChinaFonts