刷题前唠嗑
LeetCode?启动!!!
题目:可获得的最大点数
题目链接:1423. 可获得的最大点数
题目描述
代码与解题思路
func maxScore(cardPoints []int, k int) int {
front := 0
for i := 0; i < k; i++ {
front += cardPoints[i]
}
ans := front
for i := 1; i <= k; i++ {
front += cardPoints[len(cardPoints)-i] - cardPoints[k-i]
ans = max(ans, front)
}
return ans
}
我这个方法算是有那么一点前缀+贪心的思想吧,主要流程是这样的:
- 先把前 k 个数都加到一起,用 front 存着
- 然后倒着遍历后 k 个数,具体来说就是:去掉一个前 k 个的数,增加一个后 k 个的数,然后求最大值,这样就能将全部的情况都走了一遍,并把它们能得到的最大值存了起来,如果凭空想象不出来可以对着代码和样例走一遍
结语
我看到还有滑动窗口的解法,原本应该去看看的,但是最近有些累,没力气了,躺倒