当前位置: 首页 > news >正文

leetcode:心算挑战

题目:

        心算项目的挑战比赛中,要求选手从N张卡牌中选出cnt张卡牌,若这cnt张卡牌数字总和为偶数,则选手成绩「有效」且得分为cnt张卡牌数字总和。给定数组cardscnt,其中cards[i]表示第i张卡牌上的数字。 请帮参赛选手计算最大的有效得分。若不存在获取有效得分的卡牌方案,则返回0

示例 :

输入

输出

解释
cards = [1,2,8,9]
cnt = 3
18选择数字为 1、8、9 的这三张卡牌,此时可获得最大的有效得分 1+8+9=18。
cards = [3,3,1]
cnt = 1
0不存在获取有效得分的卡牌方案。

提示:

  • 1<=cnt<=cards.length<=10^5
  • 1<=cards[i]<=1000

题解:

思路:

        将 cards 从大到小排序后,先贪心的将后 cnt 个数字加起来,若此时 sum 为偶数,直接返回即可。若此时答案为奇数,有两种方案:

        在数组前面找到一个最大的奇数与后 cnt 个数中最小的偶数进行替换;

        在数组前面找到一个最大的偶数与后 cnt 个数中最小的奇数进行替换。

代码:Python

def leet_code(cards, cnt):cards.sort(reverse=True)  # 排序,从大到小、left, right = cards[0:cnt], cards[cnt:]num = sum(left)if num % 2 == 0:return numif num % 2 != 0 and len(cards) == cnt:return 0odd, even = 0, 0for i in right:  # 剩余数据的最大奇数和最大偶数if odd == 0 and i % 2 != 0:odd = iif even == 0 and i % 2 == 0:even = ians = list()for i in left:  # 所有和的可能ans.append(num - i + odd)ans.append(num - i + even)ans.sort(reverse=True)for i in ans:  # 返回最大偶数if i % 2 == 0:return iif __name__ == '__main__':cards = [1, 2, 8, 9]cnt = 3res = leet_code(cards, cnt)print(res)

总结:

题目内容来源于leetcode链接:心算挑战

http://www.lryc.cn/news/413588.html

相关文章:

  • docker部署java项目(war包方式)
  • jsp 自定义taglib
  • 从一到无穷大 #32 TimeCloth,云上的快速 Point-in-Time Recovery
  • 时间序列论文1——Forecasting at Scale
  • HDFS常用命令
  • 请问如何做好软件测试工作呢?
  • 单片机开发与Linux开发的区别
  • 【机器学习】回归类算法-相关性分析
  • java基础 之 集合与栈的使用(三)
  • JDK-java.nio包详解
  • 虚拟机与服务器的区别是什么?虚拟机与服务器的区别和联系
  • Linux CentOS stream9 命令
  • JavaScript基础——JavaScript变量声明
  • ModuleNotFoundError: No Module Named openai
  • 基于SpringBoot+Vue的校园便利平台(带1w+文档)
  • 串口应用编程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板
  • Canvas实现截图
  • Python高性能计算:进程、线程、协程、并发、并行、同步、异步
  • kafka基本操作
  • JavaFX布局-Accordion
  • 【轨物方案】评估光伏组件发电性能一致性方案
  • 安全基础学习-keil调试汇编代码
  • Unity复制对象时让私有变量也被复制的简单方法
  • Flink 实时数仓(二)【DIM 层搭建】
  • 知识图谱开启了一个可以理解的人工智能未来
  • 借助Aspose.html控件, 将SVG 转PNG 的 C# 图像处理库
  • vs-2015安装教程
  • Stable Diffusion绘画 | 文生图设置详解—随机种子数(Seed)
  • 56、php实现N的阶乘末尾有多个0
  • 混合域注意力机制(空间+通道)