力扣视频笔记19——分治法、投票法+169+53(动态规划)

本文探讨了分治法在算法设计中的应用,以归并排序为例详细解释了分治策略的步骤,并列举了四种不同的方法来解决169题,包括分治法、排序法、哈希表法和摩尔投票法。通过这些方法,阐述了解决数组众数问题的不同思路和伪代码,展示了算法思维在解决问题上的多样性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

用到了递归的思想

在这里插入图片描述

例子

归并排序——用到的思想就是分治法
在这里插入图片描述
从小到大进行依次排序
步骤:每次都对半分,对半分,一直分到集合里面只有一个数的时候。(分解到不可以再分为止)
在这里插入图片描述

最后分成了一个个数,即一个个小问题。

然后,把分解的结果往上推。
首先:两两排序,7,8排好序为78
4,1排好序为14 6,5排好序为56
2,3排好序为23
在这里插入图片描述
再把上部分得到的小解,两两排序。
78和14排序——1478
56和23排序——2356

在把解排序即1478和2356排序——12345678

题目169

在这里插入图片描述

思路+伪代码

在这里插入图片描述
第一种:(分治法)
使用分治法解决这个问题:将数组分成左右两部分,分别求出左半部分的众数 a1 以及右半部分的众数 a2,随后在 a1 和 a2 中选出正确的众数。
在这里插入图片描述
在这里插入图片描述

第二种:(排序)
遇到问题先想想先排序 排序之后看有没有什么新发现
这道题排序之后,最多元素刚好是位于中间元素。
在这里插入图片描述

第三种:(哈希表)
遍历整个数组,记录每个数值出现的次数(利用HashMap,其中key为数值,value为出现次数);
接着遍历HashMap中的每个键值对,寻找value值> nums.length / 2的key即可。

遍历一遍数组:key表示数组中的某个数,value表示该数出现了几次,当统计到某数出现的次数大于数组一半时返回该数。

在这里插入图片描述

第四种(摩尔投票法即投票法)
在这里插入图片描述
遇到相同的即友军,加一,增强了自己军队的兵力
遇到不同的,则为敌人,用自己的兵杀敌人的兵,以一抵一,减一。
在这里插入图片描述

注意:在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值