• 229. Majority Element II


        /*
         * 229. Majority Element II 
         * 12.7 by Mingyang 
         * 观察可知,数组中至多可能会有2个出现次数超过 ⌊ n/3 ⌋
         * 的众数记变量n1, n2为候选众数; c1, c2为它们对应的出现次数遍历数组,记当前数字为num若num与n1或n2相同,
         * 则将其对应的出现次数加1否则,若c1或c2为0,则将其置为1,对应的候选众数置为num否则,
         * 将c1与c2分别减1最后,再统计一次候选众数在数组中出现的次数,若满足要求,则返回之。
         */
        public List<Integer> majorityElement2(int[] nums) {
            if (nums == null || nums.length == 0)
                return new ArrayList<Integer>();
            List<Integer> result = new ArrayList<Integer>();
            int number1 = nums[0], number2 = nums[0], count1 = 0, count2 = 0, len = nums.length;
            for (int i = 0; i < len; i++) {
                if (nums[i] == number1)
                    count1++;
                else if (nums[i] == number2)
                    count2++;
                else if (count1 == 0) {
                    number1 = nums[i];
                    count1 = 1;
                } else if (count2 == 0) {
                    number2 = nums[i];
                    count2 = 1;
                } else {
    //左边右边同时减减哦!!!!!!!
    //这个是我自己做的时候没有料到的!!!!!!!!!!!!!!
    count1--; count2--; } } count1 = 0; count2 = 0; for (int i = 0; i < len; i++) { if (nums[i] == number1) count1++; else if (nums[i] == number2) count2++; } if (count1 > len / 3) result.add(number1); if (count2 > len / 3) result.add(number2); return result; }
  • 相关阅读:
    24、合并两个有序链表
    23、反转链表
    22、删除链表的倒数第N个节点
    21、删除链表中的节点
    18、实现strStr()
    17、字符串转换整数 (atoi)
    15、有效的字母异位词
    16、验证回文字符串
    14、字符串中的第一个唯一字符
    mybatis入门(七)----延迟加载
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5586377.html
Copyright © 2020-2023  润新知