【数组】1287. 有序数组中出现次数超过25%的元素(简单)

it2023-03-02  94

【题目】 给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 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) { map<int,int> m; for(auto x:arr){ m[x]++; if(m[x]>arr.size()*0.25) return x; } return 0; } };

【方法二】

class Solution { public: int findSpecialInteger(vector<int>& arr) { int n = arr.size(); int span = n / 4 + 1; for (int i = 0; i < n; i += span) { auto iter_l = lower_bound(arr.begin(), arr.end(), arr[i]); auto iter_r = upper_bound(arr.begin(), arr.end(), arr[i]); if (iter_r - iter_l >= span) { return arr[i]; } } return -1; } };
最新回复(0)