LCP 40.心算挑战

​​题目来源:

        leetcode题目,网址:LCP 40. 心算挑战 - 力扣(LeetCode)

解题思路:

       找到最大的 cnt 个数后,若其和非偶数,将最小的奇数用剩余数字中最大的偶数替换或将最小的偶数用剩下数字中最大的奇数替换。

解题代码:

class Solution {
    public int maxmiumScore(int[] cards, int cnt) {
        Arrays.sort(cards);    //cards 递增
        int[] got=new int[cnt];   //got 递减
        for(int i=0;i=0;i--){
            if(got[i]%2==0){
                if(gotMinEven==-1){
                    gotMinEven=i;    
                }
                if(gotMinOdd!=-1){
                        break;
                }
            }else{
                if(gotMinOdd==-1){
                    gotMinOdd=i;
                }
                if(gotMinEven!=-1){
                    break;
                }
            }
        }
        //找到cards中最大的奇数和最大的偶数
        for(int i=cards.length-cnt-1;i>=0;i--){
            if(cards[i]%2==0){
                if(cardsMaxEven==-1){
                    cardsMaxEven=i;
                }
                if(cardsMaxOdd!=-1){
                    break;
                }
            }else{
                if(cardsMaxOdd==-1){
                    cardsMaxOdd=i;
                }
                if(cardsMaxEven!=-1){
                    break;
                }
            }
        }
        
        int exchangeMinOdd=(gotMinOdd!=-1&&cardsMaxEven!=-1)?res-got[gotMinOdd]+cards[cardsMaxEven]:0;
        int exchangeMinEven=(gotMinEven!=-1 && cardsMaxOdd!=-1)?res-got[gotMinEven]+cards[cardsMaxOdd]:0;
        return Math.max(exchangeMinEven,exchangeMinOdd);
    }
}
 
  

总结:

        无官方题解。


你可能感兴趣的:(#,Java,LeetCode,Java)