多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
解题思路:题目中没有限制时间和空间复杂度
可以考虑先对数组元素排序,这样一样的元素一定是相邻的。然后使用双指针,在for循环中,如果nums[i]!=nums[j],修改i的值为j。否则的话,j++。然后判断j-i+1与nums.length/2的大小。题目中保证存在多数元素,所以如果某个元素出现次数大于nums.length/2的话,可终止循环。
时间复杂度O(nlogn),空间复杂度O(1)
public static int majorityElement(int[] nums) {
Arrays.sort(nums);
int i=0,index=nums[0];
for (int j=1;j<nums.length;j++){
if(nums[i]!=nums[j]){
i=j;
}
if (j-i

这篇博客探讨了在给定数组中找到多数元素(出现次数超过数组长度一半的元素)的三种方法:排序法、随机法和Boyer-Moore投票算法。详细解释了每种方法的思路和实现,包括时间复杂度和空间复杂度分析。
最低0.47元/天 解锁文章
804

被折叠的 条评论
为什么被折叠?



