1423. Maximum Points You Can Obtain from Cards
1423. Maximum Points You Can Obtain from Cards
我一開始的想法是,基礎的答案就會是前 k 的元素
接著我
- 把第 k 個元素移除後,再把最後一個元素加進來
- 把第 k - 1 個元素移除後,再把倒數第二個元素加進來
- 把第 k - 3 個元素移除後,再把倒數第三個元素加進來
- 把第 k - i 個元素移除後,再把倒數第 i 個元素加進來
第 k - i 個元素的位置會是在 k - i - 1
倒數第 i 個元素會在 -i - 1 的位置上
class Solution:
def maxScore(self, cardPoints: List[int], k: int) -> int:
res = 0
for i in range(k):
res += cardPoints[i]
state = res
for i in range(k):
state = state - cardPoints[k - i - 1] + cardPoints[-i-1]
res = max(res, state)
return res或是其實簡單一點, 在 for loop 直接用第幾個來算還比較容易。
class Solution:
def maxScore(self, cardPoints: List[int], k: int) -> int:
res = 0
for i in range(k):
res += cardPoints[i]
state = res
for i in range(1, k + 1):
state = state - cardPoints[k - i] + cardPoints[-i]
res = max(res, state)
return res