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

力扣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

解法:数组遍历

class Solution {
public:
    int findSpecialInteger(vector<int>& arr) {
        int n = arr.size();
        int target = n / 4;
        int count = 1;
        
        for (int i = 1; i < n; ++i) {
            if (arr[i] == arr[i - 1]) {
                ++count;
                if (count > target) {
                    return arr[i];
                }
            } else {
                count = 1;
            }
        }
        
        // 如果数组只有一个元素,直接返回该元素
        return arr[0];
    }
};

代码解释:

  1. n 是数组的长度,target 是25%的长度。

  2. count 用于统计当前元素的出现次数,初始值为1。

  3. 遍历数组,从第二个元素开始:

    • 如果当前元素与前一个元素相同,则增加 count

    • 如果 count 超过了 target,则返回当前元素。

    • 如果当前元素与前一个元素不同,则重置 count 为1。

  4. 如果数组只有一个元素,直接返回该元素。

复杂度分析:

  • 时间复杂度:O(n),其中 n 是数组的长度。我们只需要遍历一次数组。

  • 空间复杂度:O(1),只使用了常数个额外空间。


http://www.kler.cn/a/551412.html

相关文章:

  • 腾讯云DeepSeek大模型应用搭建指南
  • HTML【详解】input 标签
  • 人工智障的软件开发-git仓库篇-弃gitlab,走gitea
  • React 的 context 是什么?
  • 设计模式--访问者模式【行为型模式】
  • go设置镜像代理
  • 深入解析 vLLM:高性能 LLM 服务框架的架构之美(一)原理与解析
  • Python笔记——零基础学python:超详细的入门教程!python入门教程(非常详细)
  • 【Elasticsearch】词项中心(term-centric)和字段中心(field-centric)
  • Pytorch使用手册-使用 PyTorch 和 TIAToolbox 进行全视野切片图像分类(专题十七)
  • 基于 Python 和 MySQL 的房屋信息可视化及价格预测系统设计与实现(源码+lw)
  • 一文读懂Ingress-Nginx以及实战教程
  • SSL 连接
  • webpack和vite打包原理及比较
  • Python爬虫实战:获取笔趣阁图书信息,并做数据分析
  • C语言学习笔记 (初阶)
  • 信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化
  • Vue.js 组件开发:构建可复用的 UI 组件
  • Spring如何去解决循环依赖问题的?
  • 游戏数据中枢系统的架构设计与实现——以GameDataOrchestrator为核心的模块化数据管理体系