剑指offer 二叉搜索树的后序遍历

来源:互联网 发布:大庆seo推广 编辑:程序博客网 时间:2024/06/05 02:59

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。


我的做法是先用一个map<k,v>分别记录元素和元素出现的个数,然后遍历map,找到出现次数大于数组长度的一半的元素。

import java.util.*;public class Solution {    public int MoreThanHalfNum_Solution(int [] array) {        int flag = 0;        if(array.length == 0){            return flag;        }        Map<Integer,Integer> map = new HashMap<Integer,Integer>();        int length = array.length;        for(int i=0;i< length;i++){            if(map.containsKey(array[i])){                map.replace(array[i],map.get(array[i]) + 1);            }            else{                map.put(array[i],1);            }        }        for(Map.Entry entry:map.entrySet()){            int k = Integer.valueOf(entry.getKey().toString());            int v = Integer.valueOf(entry.getValue().toString());            if(v > Double.valueOf(array.length*0.5)){                flag = k;            }        }                return flag;    }}


阅读全文
0 0