当前位置: 代码迷 >> 综合 >> leetcode(1287)有序数组中出现次数超过25%的元素
  详细解决方案

leetcode(1287)有序数组中出现次数超过25%的元素

热度:2   发布时间:2023-12-26 13:48:43.0

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

请你找到并返回这个整数

方法一:遍历

class Solution {public int findSpecialInteger(int[] arr) {int len = arr.length;int res = arr[0];int count=0;for(int num : arr){if(res == num){count++;if(count > (len/4)){break;}}else{res = num;count = 1;}}return res;}
}

方法二:用HashMap计数,key为数组中的数,value为出现次数

class Solution {public int findSpecialInteger(int[] arr) {int len = arr.length;Map<Integer,Integer> map = new HashMap<>();int res=0;for(int num : arr){// 如果map中已经存放该数,则计数加一,否则默认为0map.put(num,map.getOrDefault(num,0)+1);// 同时判断数量是否超过25%if(map.get(num) > (len/4)){res = num;}}return res;}
}