测试员的算法面试题-找众数

这篇博客分享了测试工程师面试中常见的算法问题——寻找列表中的众数,通过逐步解析,从直接解题到效率优化,介绍了如何找出数组中出现次数大于n/2的元素。文中提供了一个经过优化的解决方案,利用排序和数组特性提高效率。
摘要由CSDN通过智能技术生成

本文章出自【码同学软件测试】
码同学公众号:自动化软件测试
码同学抖音号:小码哥聊软件测试

算法面试—找众数

前提:

现在测试工程师的面试,或多或少都会问到编程技术.在编程技术中,往往会挑选一个简单的算法题.很多同学一看到这,往往就不知如何是好了.后果轻则被压低薪水,重则失去这次面试机会.

其实面试中的算法,可以通过刷题来进行准备.下面分享下最近面试遇到的算法面试题

题目-寻找一个列表中的众数

给定一个大小为n的数组,找到其中的众数

*众数:是指在数组中出现次数大于"n/2"的元素

示例:

给定数组:list = [1,2,5,5,5,5,7]

预期输出: 5

LV1:直接解题

先用最直接的方式,尝试转化题目

def func(num:list): #定义一个函数,接收"列表"数据

res = []                #定义一个变量接收结果 

对于大于"n/2"这条需求,可以先求出n

n = len(num) #用len函数得到n

找到数组里的众数,可以理解为:在数组中进行循环比较.

条件是 当前元素出现次数(list.count()函数可以得出)大于 n/2

如果符合条件,则存到res变量中

对于大于"n/2"这条需求,可以先求出n

for i in num: #遍历num
now_time = num.count(i) #得到当前遍历项的出现次数
if now_time > n/2: #如果该数字出现次数大于n/2
res.append(i) #则加入结果

由于循环中,会把每一个众数都加到结果中得到如下结果<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值