大家好,我是吴师兄。
昨天在抖音差不多全程看完了雷军的直播,虽然主题是“聊聊小米 SU7 开售这 20 天”,聊了很多小米汽车的信息,比如小米没有造越野车的计划、小米汽车定位民用车等等,但期间也聊了挺多八卦,比如:
-
1、撞衫马斯克也是机缘巧合,科技休闲基本都这么穿;
-
2、想过上架小米食堂的大麻花,但是小米没有食品销售许可证(哈哈哈哈);
等等。
我上一次完整的看完一场这么久的直播还是小米SU7的发布会,也是雷军主讲的。
虽然市场上对于小米的评价正面和负面都有,但在很多程序员眼中,雷军的形象比其他互联网大佬的形象正面的多。
或许雷军粉远远大于小米粉
。
在直播中,雷军辟谣了自己“爽文人生”的八卦传言。雷军表示,
自己并不是高考状元,也没有考 700 分。而且卡里也没有冰冷的 40 亿,希望大家帮忙辟谣。
雷军还表示:“我最失意的时候也不是卡里只有冰冷的 40 亿,我跟大家一样,我来自农村,靠勤奋努力和时代的机会一步一步走到今天。人生的成功不是爽文,要靠梦想、奋斗和贵人相助。看一看笑一笑就好,恳请大家帮我辟谣。”
不知道大家信不信,反正我是信了,毕竟温暖的 40 亿和冰冷的 40 亿确实也是不同的两个概念
。
继续今天的算法学习,来一个简单的算法题:
比赛中的配对次数
。
一、题目描述
给定一个整数 n,表示参加比赛的队伍数,每场比赛都会淘汰一支队伍,直到剩下最后一支队伍为止。每场比赛都是两支队伍之间的对决,因此需要进行若干场比赛才能产生最终的冠军。求出总共进行的比赛场次。
二、题目解析
算法思路:
-
-
-
如果队伍数为偶数,则进行 n / 2 场比赛,同时剩下 n / 2 支队伍。
-
如果队伍数为奇数,则进行 (n - 1) / 2 场比赛,同时剩下 (n - 1) / 2 + 1 支队伍。
代码解析:
-
-
-
如果队伍数为偶数,则进行 n / 2 场比赛,同时剩下 n / 2 支队伍。
-
如果队伍数为奇数,则进行 (n - 1) / 2 场比赛,同时剩下 (n - 1) / 2 + 1 支队伍。
-
算法正确性证明:
-
在每一轮循环中,根据队伍数是偶数还是奇数,分别计算出本轮比赛的场次以及剩余的队伍数,然后将比赛场次累加到结果变量中。
-
当队伍数为 1 时,循环结束,返回结果变量 ans,即为总共进行的比赛场次。
算法的优势:
-
算法简单直观,通过循环迭代计算每一轮比赛的场次,时间复杂度较低。
-
不需要额外的数据结构或复杂的操作,适用于较大规模的比赛场次计算。
算法的适用性:
-
适用于解决统计总共进行的比赛场次的问题,特别适用于比赛场次按照每轮对阵双方成对进行的情况。
总结:本算法通过简单的循环迭代,计算出每一轮比赛的场次并累加到结果变量中,解决了统计比赛场次的问题。算法简洁高效,适用于该类问题的求解。
三、参考代码
class Solution:
def numberOfMatches(self, n: int) -> int:
# 结果变量
ans = 0
# 不断的配对比赛,直到剩下一支队伍为止
while n > 1:
# 1、偶数支队伍
if n % 2