主元素算法

counting 大于 n/2, n/3都可以用投票法来做

int count = 1 ;
        int major = nums[0];
        for(int i = 1, size = nums.size(); i < size; i++) {
            if (count == 0) {
                major = nums[i];
                count = 1;
            }
            else {
                if (nums[i] == major)
                    count++;
                else {
                    count--;
                }
            }
        }
        return major;
 int cnt1 = 0;
        int cnt2 = 0;
        int a = 0;
        int b = 1;
        for (auto val : nums) {
            if (val == a) {
                cnt1++;
            }
            else if (val == b) {
                cnt2++;
            }
            else if (cnt1 == 0) {
                a = val;
                cnt1 = 1;
            }
            else if (cnt2 == 0) {
                b = val;
                cnt2 = 1;
            }
            else {
                cnt1--;
                cnt2--;
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 一、实验目的 学习使用 weka 中的常用分类器,完成数据分类任务。 二、实验内容 了解 weka 中 explo...
    yigoh阅读 8,629评论 5 4
  • Tensorflow学习 看原版论文和代码
    elsinore阅读 462评论 0 0
  • 双十一的线上抢购不爱凑热闹,却常常在双十二这时喜欢出去逛逛看看。 这么多年来,支付宝、微信真的改变了很多东西。生活...
    vera还是kiki阅读 194评论 0 0
  • 最近经济萧条,大家的生活工作都会受到一些影响,有坏情绪的人越来越多。 我经常会遇到他们给我抱怨。有的抱怨自己的老板...
    徐梦白阅读 558评论 24 5