golang力扣leetcode 1996.游戏中弱角色的数量

golang力扣leetcode 1996.游戏中弱角色的数量,第1张

1996.游戏中弱角色的数量 1996.游戏中弱角色的数量题解代码

1996.游戏中弱角色的数量

1996.游戏中弱角色的数量

题解

第一种做法:按照攻击力从大到小排序,相同攻击力则按照防御力从小到大排序,遍历切片,如果当前元素的防御小于维护的最大的防御,说明这个元素是最弱的,因为当前元素的攻击因为排序必定小于上一个,而防御又小于维护的最大防御,此时ans++,如果当前元素的防御大于维护的防御,则更新维护的最大防御

第二种做法:按照攻击力从小到大排序,相同攻击力则按照防御力从大到小排序,遍历切片,然后看for循环的代码

代码
package main

import "sort"

func numberOfWeakCharacters1(properties [][]int) int {
	sort.Slice(properties, func(i, j int) bool {
		return properties[i][0] > properties[j][0] ||
			properties[i][0] == properties[j][0] && properties[i][1] < properties[j][1]
	})
	defense := 0
	ans := 0
	for _, v := range properties {
		if v[1] < defense {
			ans++
		} else {
			defense = v[1]
		}
	}
	return ans
}
func numberOfWeakCharacters2(properties [][]int) int {
	sort.Slice(properties, func(i, j int) bool {
		return properties[i][0] < properties[j][0] ||
			properties[i][0] == properties[j][0] && properties[i][1] > properties[j][1]
	})
	ans := 0
	var cnt []int
	for _, v := range properties {
		for len(cnt) > 0 && cnt[len(cnt)-1] < v[1] {
			ans++
			cnt = cnt[:len(cnt)-1]
		}
		cnt = append(cnt, v[1])
	}
	return ans
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/994606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存