zoukankan      html  css  js  c++  java
  • leetcode Add to List 229. Majority Element II ---------- java

    Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.

     
    之前也有类似得题,找出出现次数大于一般的元素,两道题一个想法。
     
    public class Solution {
        public List<Integer> majorityElement(int[] nums) {
            
            List<Integer> list = new ArrayList();
            int[][] num = new int[2][2];
            num[0][1] = -1;
            num[1][1] = -1;
            for (int i = 0; i < nums.length; i++){
                if (num[0][1] != -1 && num[0][0] == nums[i]){
                    num[0][1]++;
                } else if (num[1][1] != -1 && num[1][0] == nums[i]){
                    num[1][1]++;
                } else if (num[0][1] < 1){
                    num[0][0] = nums[i];
                    num[0][1] = 1;
                } else if (num[1][1] < 1){
                    num[1][0] = nums[i];
                    num[1][1] = 1;
                } else {
                    num[0][1]--;
                    num[1][1]--;
                }
            }
            num[0][1] = 0;
            num[1][1] = 0;
            for (int i = 0; i < nums.length; i++){
                if (num[0][0] == nums[i]){
                    num[0][1]++;
                } else if (num[1][0] == nums[i]){
                    num[1][1]++;
                }
            }
            if (num[0][1] > nums.length / 3){
                list.add(num[0][0]);
            }
            if (num[1][1] > nums.length / 3){
                list.add(num[1][0]);
            }
            return list;
        }
    }
  • 相关阅读:
    关于# define 的使用
    翻转课堂---案例1
    四则运算
    第一次随笔
    第一次随笔
    第一次随笔
    beta冲刺1
    BETA 版冲刺前准备
    Alpha 事后诸葛亮
    Alpha 答辩总结
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/7251109.html
Copyright © 2011-2022 走看看