LeetCode 169 多数元素

一,题目描述

二,题目分析

1.根据题目的描述,只需要求出数组中出现次数超过一半的元素

2.思路1  统计各个元素的出现次数,显然出现次数超过一半的元素一定是出现次数最多的元素

3.思路2  对给定的数组排序,因为数组中一定存在 多数元素 ,故排序后数组的中间位置一定是 多数元素

4.思路3 摩尔投票法:从第一个数开始count=1,遇到相同的就加1,遇到不同的就减1,减到0就重新换个数开始计数,总                                     能找到最多的那个

三,代码解答

1.思路2

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        sort(nums.begin() , nums.end());
        return nums[(nums.size()/2)];
    }
};
public int majorityElement(int[] nums) {
		int count = 1;
		int maj = nums[0];
		for (int i = 1; i < nums.length; i++) {    
			if (maj == nums[i])
				count++;
			else {
				count--;
				if (count == 0) {            
					maj = nums[i + 1];
				}
			}
		}
		return maj;
	}
发布了54 篇原创文章 · 获赞 14 · 访问量 3593

猜你喜欢

转载自blog.csdn.net/q2511130633/article/details/104838158