收录网站源码,医院seo是什么,王也台词,最专业汽车网站建设题目链接
多数元素
题目描述 注意点
给定的数组总是存在多数元素多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素
解答思路
初始想到使用map存每个元素和元素出现的次数#xff0c;但是时间和空间都不理想因为本题给定的数组总是存在多数元素#xff0c;使用投票算…题目链接
多数元素
题目描述 注意点
给定的数组总是存在多数元素多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素
解答思路
初始想到使用map存每个元素和元素出现的次数但是时间和空间都不理想因为本题给定的数组总是存在多数元素使用投票算法统计多数元素遍历整个数组将第一个元素设置为候选元素如果当前元素和候选元素相等则count 1否则count - 1如果count 0则要将候选元素修改为当前元素上述投票算法成立的前提是给定的数组总是存在多数元素以及多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素遍历数组时多数元素能够抵消所有其他元素并保持其count 0
代码
class Solution {public int majorityElement(int[] nums) {// 初始候选人为数组中的第一个数初始票数为1int cand_num nums[0];int count 1;for (int i 1; i nums.length; i) {if (cand_num nums[i]){// 如果当前元素与候选人相同则票数 1count;}else {// 当前元素与候选人不同则票数 - 1count--;// 如果此时票数小于0则更换候选人改变票数为1if(count 0) {cand_num nums[i];count 1;}}}return cand_num;}
}关键点
投票算法的思想