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

【LetMeFly】1287.有序数组中出现次数超过25%的元素:遍历

力扣题目链接:https://leetcode.cn/problems/element-appearing-more-than-25-in-sorted-array/

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

请你找到并返回这个整数

示例:

复制代码
输入:arr = [1,2,2,6,6,6,6,7,10]
输出:6

提示:

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

解题方法:遍历

对于长度为 n n n的有序 数组,对于一个首次出现下标为 i i i的数:

整个数出现次数超过了 25 % 25\% 25% 等价于 下标 ⌊ n 4 ⌋ + i \lfloor\frac{n}{4}\rfloor+i ⌊4n⌋+i仍为这个数。

  • 时间复杂度 O ( l e n ( a r r ) ) O(len(arr)) O(len(arr))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
cpp 复制代码
/*
 * @Author: LetMeFly
 * @Date: 2025-02-17 14:38:51
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-17 14:42:26
 */
class Solution {
public:
    int findSpecialInteger(vector<int>& arr) {
        int locDiff = arr.size() / 4;
        for (int i = 0; 1; i++) {
            if (arr[i] == arr[i + locDiff]) {
                return arr[i];
            }
        }
    }
};
Python
python 复制代码
'''
Author: LetMeFly
Date: 2025-02-17 14:38:57
LastEditors: LetMeFly.xyz
LastEditTime: 2025-02-17 14:43:22
'''
from typing import List

class Solution:
    def findSpecialInteger(self, arr: List[int]) -> int:
        locDiff = len(arr) // 4
        for i in range(len(arr)):
            if arr[i] == arr[i + locDiff]:
                return arr[i]
        return -1  # Fake Return
Java
java 复制代码
/*
 * @Author: LetMeFly
 * @Date: 2025-02-17 14:39:05
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-17 14:44:38
 */
class Solution {
    public int findSpecialInteger(int[] arr) {
        int locDiff = arr.length / 4;
        for (int i = 0; true; i++) {
            if (arr[i] == arr[i + locDiff]) {
                return arr[i];
            }
        }
    }
}
Go
go 复制代码
/*
 * @Author: LetMeFly
 * @Date: 2025-02-17 14:39:01
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2025-02-17 14:47:00
 */
package main

func findSpecialInteger(arr []int) int {
    locDiff := len(arr) / 4
    for i := 0; true; i++ {
        if arr[i] == arr[i + locDiff] {
            return arr[i]
        }
    }
    return -1  // Fake Return - 及时上面是for true也需要return
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

Tisfy:https://blog.letmefly.xyz/2025/02/17/LeetCode 1287.有序数组中出现次数超过25的元素

相关推荐
张欣-男8 分钟前
3分钟理解线性代数
线性代数·算法
白狐_79812 分钟前
408 数据结构|外部排序优化:怎么减少时间开销
数据结构·算法
小白说大模型12 分钟前
Hermes 全配置指南:从裸版到 AI Agent 天花板
大数据·人工智能·学习·算法·机器学习·数据挖掘
a1879272183122 分钟前
【算法】动态规划入门:从打家劫舍到状态设计的三堂课
算法·leetcode·动态规划·dp·回溯·暴力
淡海水10 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan10 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
Tisfy11 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
lvwangshu11 小时前
P7668 [JOI 2018 Final] 团子制作 / Dango Maker 题解
动态规划·题解·贪心·性质题·思维好题
乐迪信息12 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
木井巳13 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法