87 滑动窗口解可获得的最大点数

2024-01-02 15:59:38

记账卡牌排成一行,每张卡牌都有一个对应的点数,点数由整数数组cardPoints给出。每次行动,你可以从行的开头或者结尾拿一张卡牌,最终你必须正好拿k张卡牌,你的点数就是你拿到手中的所有卡牌点数之和。

滑动窗口求解思路:由于只能在最开始和最末尾截取卡牌,从而可以看做将整数数组cardPoints连接成环状,k个元素必须包含元素的end或start中的一个,并不停滑动更新,寻找最值。

public int maxPoints(int []cardPoints,int k)
{
//首先先将开头到结尾的k个数字进行相加,而后进行滑动,并比较
int maxNum=0;
for(int i=0;i<k;i++)
{
maxNum+=cardPoints[i];
}
for(int i=0;i<k;i++)
{
maxNum=Math.max(maxNum,maxNum-nums[k-1+i]+nums[cardPoints.length-1-i]);
}
???????return maxNum;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135338966
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。