• 力扣 1423 :可获得的最大点数


    题目描述:

      几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。

      每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。

      你的点数就是你拿到手中的所有卡牌的点数之和。

      给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。

    示例:

      输入:cardPoints=[2,2,2] , k=2

      输出:4

      解释:无论你拿起哪两张卡牌,可获得的点数总是4

      输入:cardPoints=[9,7,7,9,7,7,9] , k=7

      输出:55

      解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和

      输入:cardPoints=[1,79,80,1,1,1,200,1] , k=3

      输出:202

      解释:

     

    综合解法(JS实现):

      解法一(普通大众解法):

    var cards=[4,6,8,,2,4,5,9];  //数字卡
    var pickCards=3;    //要拿的卡数
    var pickCardsMaxSum=0; //拿到的卡数的最大值
    
    for(let i=0; i<pickCards; i++){
        if(cards[0] >= cards[cards.length-1]){
             pickCardsMaxSum+=cards[0]  ;
             cards.shift();
        }else{
             pickCardsMaxSum+=cards[cards.length-1];
             cards.pop();
        }
    }        
    
    console.log('输出拿到卡数的最大值:',pickCardsMaxSum);

       解法二(滑动窗口解法):

    //思想是:所有数字之和-最小的滑动窗口值和=最大值和
    var cards=[9,7,7,9,7,7,9]; //所有的数字卡
    var allCardsSum=0;  //所有卡的数字和
    var pickCards=7;    //拿的卡数
    var windowMinSum=0;   //移动窗口的最小值
    var windowSize=cards.length-pickCards; //移动窗口的大小
    var sum=0;   //移动窗口的值
    
    //得到所有的数字卡和
    for(let i=0;i<cards.length;i++){
        allCardsSum+=cards[i];
    }
    
    //初始化窗口的最小和值
    for(let i=0;i<windowSize;i++){
        windowMinSum+=cards[i];
    }
    sum=windowMinSum;
    for(let s=windowSize;s<cards.length;s++){
        sum+=cards[s]-cards[s-windowSize];
        windowMinSum=Math.min(sum,windowMinSum);  
    }
    var res=allCardsSum-windowMinSum;
    console.log('得到的最大和值‘,res); 
    总结:上面解法没有考虑到某些情况,因为相对于滑动窗口的解题思想来说我其余的情况没有诱惑力;
       刷题不在于多少在于你吸收了多少,刚开始入手慢随着积累慢慢的就可以提速了;
       一步一个脚印!!!继续加油

    版权声明:本文为博主原创文章,如需转载,请标明出处。
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/gamecc666/p/14582955.html
Copyright © 2020-2023  润新知