zoukankan      html  css  js  c++  java
  • 剑指offer-数组中超过一半的数字

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

    思路:利用map

    ac代码:

     1 import java.util.HashMap;
     2 import java.util.List;
     3 import java.util.Map;
     4 public class Solution {
     5     public int MoreThanHalfNum_Solution(int [] array) {
     6         Map<Integer,Integer>map=new HashMap<Integer, Integer>();
     7         int n=array.length;
     8         if(n==1)
     9             return array[0];
    10         int x;
    11        boolean flag=false;
    12        for(int i=0;i<n;i++){
    13             x=array[i];
    14            if(map.containsKey(x)){
    15                map.put(x, map.get(x)+1);
    16                if(map.get(x)>n/2){
    17                   return x;
    18                }
    19            }else{
    20                map.put(x,1);
    21            }
    22        }
    23        return 0;
    24     }
    25 }
  • 相关阅读:
    《Spring_Four》第二次作业 基于Jsoup的大学生考试信息展示系统开题报告
    《Spring_Four》第一次作业:团队亮相
    4.11jsp
    4.7jsp
    3.17jsp
    3.24jsp
    3.10jsp
    3.4软件测试
    回文串
    博客园第二次作业
  • 原文地址:https://www.cnblogs.com/llsq/p/8796622.html
Copyright © 2011-2022 走看看