本文主要是介绍1423. 可获得的最大点数 --力扣 --JAVA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组
cardPoints
给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿
k
张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。
给你一个整数数组
cardPoints
和整数k
,请你返回可以获得的最大点数。
解题思路
- 先从一边获取所有卡片;
- 逐个替换成另一侧的卡片;
- 每次替换后比较大小选择最大值;
代码展示
class Solution {public int maxScore(int[] cardPoints, int k) {int ans = 0;//先全部从左边取值for (int i = 0; i < k; i++){ans += cardPoints[i];}int n = cardPoints.length;int index = 1;int temp = ans;while (index <= k){//逐个替换成右边值再比较temp = temp - cardPoints[k - index] + cardPoints[n - index];ans = Math.max(ans, temp);index++;}return ans;}
}
这篇关于1423. 可获得的最大点数 --力扣 --JAVA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!