【LeetCode100】--- 97.多数元素【思维导图+复习回顾】
题目传送门


代码实现
方法一:排序
class Solution {public int majorityElement(int[] nums) {Arrays.sort(nums);return nums[nums.length/2];}
}
复杂度分析
时间复杂度:O(nlogn),将数组排序的时间复杂度为 O(nlogn)。
空间复杂度:O(logn)。如果使用语言自带的排序算法,需要使用 O(logn) 的栈空间。如果自己编写堆排序,则只需要使用 O(1) 的额外空间。
方法二:摩尔投票算法
class Solution {public int majorityElement(int[] nums) {int count = 0;int condidate = 0;for(int num : nums){if(count == 0){condidate = num;}count += condidate == num ? 1 : -1;}return condidate;}
}
复杂度分析
时间复杂度:O(n),只需要遍历一次数组
空间复杂度:O(1),只定义了几个常数级别的变量。
