题解 | #数组中出现次数超过一半的数字#

数组中出现次数超过一半的数字

http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

  1. 虽然不算最优解,但是满足题意,时间复杂度O(n),空间复杂度O(1)
  2. 先找到最大值-》确定数组的长度
  3. 统计值的个数
  4. 遍历取出最大值的索引
public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        
        int max = array[0];
        for(int a : array){
            if(a>max){
                max = a;
            }
        }
        int[] arr = new int[max+1];
        for(int s : array){
            arr[s] = arr[s] +1;
        }
        max = 0;
        int index = 0;
        for(int i=0;i<arr.length;i++){
            if( arr[i]> max){
                max = arr[i] ;
                index = i;
            }
        }
        return index;
    }
}
全部评论
int[] arr = new int[max+1]; 你确定执行完这一句,空间复杂度还是1?
点赞 回复 分享
发布于 2023-05-09 14:16 北京

相关推荐

02-24 17:39
门头沟学院 Java
神哥不得了:神哥来啦~专业技能的话建议不要前面空那么多,八股的话建议先把高频top 50的八股多巩固几遍,千万不要看那些假高频八股。项目的话,建议换两个高质量的项目上去
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务