当前位置: 首页 > wzjs >正文

枝江市住房和城乡建设局网站网店怎么开起来

枝江市住房和城乡建设局网站,网店怎么开起来,手机网站seo教程下载,长宁长沙网站建设一、题目 169. 多数元素 给定一个大小为 n 的数组 nums ,返回其中的多数元素。 多数元素是指在数组中出现次数大于[n/2]的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出&a…

一、题目

169. 多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。
多数元素是指在数组中出现次数大于[n/2]的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:nums = [3,2,3]
输出:3

示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2

二、思路

1. 本题的关键就是用什么方法统计元素出现的次数,由此会引出多种解法。

① 参考前面题目的先排序后处理思路,在这里也可以先进行排序,一个很有用的信息是,我们要找的多数元素,出现次数必须≥n/2,这意味着排序后的中位数一定就是这个多数元素

 Boyer-Moore 投票算法:这种算法的核心思想是通过“投票”机制来找到多数元素。每个元素都可以看作是一张票,投给当前的候选元素。

  • 当遇到相同的元素时,计数器增加,表示支持当前候选元素的票数增加。
  • 当遇到不同的元素时,计数器减少,表示反对当前候选元素的票数增加。
  • 当计数器为 0 时,说明当前没有候选元素,可以选择当前元素作为新的候选元素。

在这道题中:

  • 设置一个计数器 count,初始值为 0。
  • 设置一个候选元素 candidate,初始值为 null

对于数组中的每个元素 num,如果 num 不等于当前候选元素 candidate,将 count 减 1。如果 num 等于当前候选元素 candidate,将 count 加 1。如果 count 为 0,说明当前没有候选元素,将 num 设为候选元素。

③ 可以用哈希表来简化问题(主要是降低时间复杂度)。这里的映射很明显就是数组元素和元素出现次数之间的映射,也就是可以借助哈希表中的键值对匹配来判断出现次数要不要+1.具体见后续的代码。

三、代码

解法一:先排序后处理

① JavaScript:

 function countTimes(nums){let n = nums.length;nums.sort((a,b)=>a-b);return nums[Math.floor(n/2)];
//这里的Math.floor可以确保结果是一个整数,即向下取整。
}

② C++:

int majorityElement(vector<int>& nums) {sort(nums.begin(), nums.end());return nums[nums.size() / 2];
}

③ Python:

def majorityElement(nums]):nums.sort()return nums[len(nums) // 2]

解法二:Boyer-Moore投票算法

① JavaScript:

function countTimes(nums){let major = nulllet count = 0for (let num of nums) {if (count === 0) {major = num}if (major === num) {count++} else {count--}}return major
}

② C++:

int countTimes(const std::vector<int>& nums) {int major = 0;int count = 0;for (int num : nums) {if (count == 0) {major = num;}if (major == num) {count++;} else {count--;}}return major;
}

③ Python:

def count_times(nums):major = Nonecount = 0for num in nums:if count == 0:major = numif major == num:count += 1else:count -= 1return major

解法三:哈希表

① JavaScript:

function countTimes (nums) {let hashTable = {};let n = nums.length;// 遍历数组,统计每个元素的出现次数for (let num of nums) {if (hashTable[num] == null) {hashTable[num] = 1;} else {hashTable[num]++;}}// 找到出现次数大于 n/2 的元素for (let num in hashTable) {if (hashTable[num] > Math.floor(n / 2)) {return parseInt(num);}}return null;  // 如果没有多数元素,返回 null
};

② C++:

int countTimes(const std::vector<int>& nums) {unordered_map<int, int> hashtable;int n = nums.size();// 遍历数组,统计每个元素的出现次数for (int num : nums) {hashtable[num]++;}// 找到出现次数大于 n/2 的元素for (const auto& pair : hashtable) {if (pair.second > n / 2) {return pair.first;}}return -1;  // 如果没有多数元素,返回 -1
}

③ Python:

def count_times(nums):# 使用 Counter 统计每个元素的出现次数counter = Counter(nums)n = len(nums)# 找到出现次数大于 n/2 的元素for num, count in counter.items():if count > n / 2:return numreturn None  # 如果没有多数元素,返回 None

四、反思

1. 之前并不了解Boyer-Moore投票算法,从这道题来看该算法很适合用于高性能要求/内存限制高的题目;

2. 一定要抓住题目中的信息,比如这道题中的n/2,想清楚以后可以简化我们的代码(帮助我们确定中位数一定也就是众数,也就是多数元素)。


文章转载自:

http://qCa9ONlY.ypdwc.cn
http://T3GHfH56.ypdwc.cn
http://mM6QKG1Q.ypdwc.cn
http://JUqCJV9u.ypdwc.cn
http://VDHvdt45.ypdwc.cn
http://GFQ87SyG.ypdwc.cn
http://lVeQzYOG.ypdwc.cn
http://i0gaz9JV.ypdwc.cn
http://XTSXSSNS.ypdwc.cn
http://ZYYIzQxw.ypdwc.cn
http://SQx4puju.ypdwc.cn
http://x3GKq6K3.ypdwc.cn
http://G48EczQE.ypdwc.cn
http://rny295QI.ypdwc.cn
http://LoYNXEpM.ypdwc.cn
http://6cRjpMkC.ypdwc.cn
http://hBQOEkRL.ypdwc.cn
http://ZCqv408o.ypdwc.cn
http://N7hCw7SQ.ypdwc.cn
http://JAHA5wig.ypdwc.cn
http://DIIp1iPc.ypdwc.cn
http://GzKgmJDa.ypdwc.cn
http://Q3gpcFIl.ypdwc.cn
http://LXsUTAs4.ypdwc.cn
http://UAzs1MDB.ypdwc.cn
http://HYhpuwzQ.ypdwc.cn
http://Q8KmnMQ9.ypdwc.cn
http://3Usm8thh.ypdwc.cn
http://8fr4YKS5.ypdwc.cn
http://kD0dk7Rh.ypdwc.cn
http://www.dtcms.com/wzjs/749752.html

相关文章:

  • 德州建设局网站免费全面的seo教程
  • 郴州网站建设ku0735合肥响应网站案例
  • 轻博客网站开发江苏省执业建设注册中心网站
  • 网站运营实例中国建设银行春招网站
  • 网站怎么做的精致一点ppt模板免费下载图片
  • 有没有做面粉美食的网站大学生网页设计作业
  • 可以登陆的wordpressseo培训多少钱
  • 半月报网站建设商务代表工作总结互联网建站
  • 网站建设经验交流发言哪里有网站开发服务器
  • 宁波网页网站制作怎么把货卖到国外
  • 网站开发制作学徒企业网站模板湖南岚鸿模板
  • 中国新农村建设促进会网站网站推广是什么意思
  • 上海建设网站是国家级吗计算机速成班培训
  • 兰州模板网站建设网站的二维码怎么做的
  • 商业设计网站有哪些做网站数据库要哪一种好
  • 怎样做外贸网站wordpress 音乐播放器插件
  • 怎么给网站添加站点统计网页制作基础教程第二版
  • 门户网站的种类腾讯云cos wordpress
  • 广州网站建设流程开发一个电商app软件多少钱
  • 公司注册网站查询惠州建设局官方网站
  • 建网站需什么条件强化网站建设
  • 上海市住宅建设发展中心网站百度竞价推广的优势
  • 电子商务网站建设的必要性精品网站建设
  • 郑州网站建设动态怎么注册公司需要什么资料
  • 公司网站的建设哪家好网站建设3a模型是什么
  • 承德 网站建设 网络推广 网页设计手机怎么开发软件app
  • 阿里云免费建站手机网页版传奇
  • 网站软文得特点便宜网站建设
  • 设计什么网站简单网站建设后百度找不到
  • 相亲网站男人拉我做外汇企业网站建设毕业设计