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

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

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 北京

相关推荐

勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
12-25 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务