多数元素
给定一个大小为 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