zoukankan      html  css  js  c++  java
  • leetcode 1517 数组中出现次数超过一半的数字

    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字(假设这个数字为k)。

    O(n)做法:设置一个target,如果数组的中值等于target,则count++,否则count--,若count为0则更新这个值。

    那么我们假设最差的情况,每次count为0时至少有一半的k与其他的不是k的进行抵消,那么最后一定还会存在一个k可以被标记为target。

     1 class Solution {
     2 public:
     3     int majorityElement(vector<int>& nums) {
     4       int target;
     5       int count=0;
     6       for(int i=0;i<nums.size();i++)
     7       {
     8           if(count==0)
     9           {
    10               target=nums[i];
    11           }
    12           if(nums[i]==target)
    13            count++;
    14            else
    15            count--;
    16       }
    17       return target;
    18     }
    19 };
  • 相关阅读:
    Elasticsearch 结构化搜索
    KMP 算法
    ElasticSearch 配置
    C++ 入门
    Spark 基础操作
    HBase 与 MapReduce 集成
    iOS面试相关
    iOS开发值得学习的Demo
    Mac系统安装MyEclipse
    linux安装tomcat
  • 原文地址:https://www.cnblogs.com/Carits/p/12391546.html
Copyright © 2011-2022 走看看