众数是指在一组数据中出现次数最多的数,重数是指一个数在一组数据中出现的次数。
在Java中,求众数和重数可以通过编写代码实现。
// 求众数 public static int majorityElement(int[] nums) { int majority = nums[0]; int count = 1; for (int i = 1; i< nums.length; i++) { if (count == 0) { majority = nums[i]; count = 1; } else if (nums[i] == majority) { count++; } else { count--; } } return majority; } // 求重数 public static int getFrequency(int[] nums, int num) { int count = 0; for (int i = 0; i< nums.length; i++) { if (nums[i] == num) { count++; } } return count; }
使用以上代码可通过传入一个数组来求出其中的众数和重数。
求众数的代码采用了摩尔投票算法,该算法的时间复杂度为O(n),空间复杂度为O(1)。
求重数的代码则通过遍历数组,统计指定数字出现的次数来实现。其时间复杂度为O(n)。