169. 多数元素 --力扣 --JAVA

题目

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

解题思路

  1. 利用Arrays自带的函数对数组进行排序;
  2. 记录起始位置和元素值,当元素值不同时进行计算元素出现次数,符合要求,以当前元素为结果返回,不符合要求则以当前位置为起始点,继续进行遍历。

代码展示

public class Nine {
    public static void main(String[] args) {
        Nine nine = new Nine();
        System.out.println(nine.majorityElement(new int[]{3,2,3}));
        System.out.println(nine.majorityElement(new int[]{2,2,1,1,1,2,2}));
    }
    public int majorityElement(int[] nums) {
        int n = nums.length;
        Arrays.sort(nums);
        int start = 0;
        int code = nums[0];
        for (int i = 1; i < n; i++){
            if(nums[i] != code){
                if(i - start > n / 2){
                    return code;
                }
                code = nums[i];
                start = i;
            }
        }
        return code;
    }
}

你可能感兴趣的:(力扣练习,算法,数据结构)