关于webgl:开课吧高薪webGL工程师2022最新完结无密

download:开课吧高薪webGL工程师2022最新完结无密

文章参考 自学it666 https://www.zxit666.com/
形容
你在玩一个蕴含多个角色的游戏,每个角色都有两个次要属性:攻打和进攻。给你一个2D整数数组属性,其中properties[i] = [attacki,defensei]代表游戏中第I个角色的属性。如果一个角色的攻打和进攻等级都比这个角色的攻打和进攻等级高很多,那么这个角色就被认为是弱的。更正式地说,如果存在另一个字符j,其中attackj > attacki和defensej > defensei,则称字符I是弱的。
返回弱字符的数量。
示例1:
输出:属性= [[5,5],[6,3],[3,6]]
输入:0
阐明:没有一个角色比另一个角色有更强的攻击力和防御力。

复制代码
示例2:
输出:属性= [[2,2],[3,3]]
输入:1
阐明:第一个角色很弱,因为第二个角色有更强的攻击力和防御力。
复制代码
留神:
2
属性[i]。长度== 2
一个
复制代码
剖析
依据题目,咱们正在玩一个有多个角色的游戏,每个角色有两个次要属性:攻打和进攻。给定一个二维整数数组属性,其中properties [i] = [attack,defense]代表第I个字符的属性。如果另一个角色的攻打和防具等级严格高于该角色的攻打和防具等级,则该角色被称为弱角色。更艰深地说,如果有另一个字符索引J,其中attackj > attacki,defence j > defence i,则索引为I的字符称为弱字符。返回弱角色的数量。
其实这个问题是对于排序的,AC一次遍历就能够实现。咱们晓得问题须要弱字符的个数,所以咱们只须要数一数。我要判断的维度有两个维度:攻击力和防御力,所以能够依照物理学中“控制变量法”的思路,先判断一个维度,再判断另一个维度。要达到这个“严格大于”的要求,首先要排序。咱们依照攻击力降序和防御力升序排序,这样在确定弱角色攻击力满足“严格小于”时,就能够通过判断弱角色防御力“严格小于”来找到弱角色。
而后咱们遍历属性。如果以后角色的攻击力小于之前穿梭过的角色,就不能判断是弱角色。因为防御力是不确定的,所以为了不便,咱们要用一个变量max_defense来记录被遍历角色的最大防御力,所以如果以后角色的防御力严格小于max_defense,就阐明肯定是真角色,后果能够加一。
理论须要判断攻击力雷同但防御力严格小于前一个角色的状况。然而咱们的写法能够省去这个判断步骤,因为咱们是按防御力升序排序的,这样如果以后防御力严格小于之前的最大防御力,那么攻击力肯定是不相等的,因为攻击力相等时防御力是按升序排序的。
依照下面的办法,一次遍历后失去的后果就是最终后果,能够返回。工夫复杂度是O(logN+N),N是属性的长度,因为属性要先排序再遍历,空间复杂度是O(1),因为没有开拓新的空间。
解释
类别解决方案(对象):
def numberOfWeakCharacters(本身,属性):
“””
:类型属性:List[List[int]]
:rtype: int
“””
properties . sort(key = lambda x:(-x[0],x[1]))
后果=最大进攻= 0
对于_,属性中的进攻:
如果进攻<最大进攻:
后果+= 1
否则:
max_defense =进攻
回送后果
复制代码
运行后果
运行工夫:2301 ms,比游戏中弱角色数量的Python在线提交快84.75%。
内存应用:69.6 MB,不到Python在线提交的游戏中弱角色数量的42.37%。
复制代码

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据