题目描述:

方法一:动态规划 O(N)

  1. class Solution:
  2. def maxSumDivThree(self, nums: List[int]) -> int:
  3. dp = [0, -1,-1]
  4. for n in nums:
  5. tmp = dp[:]
  6. for i in range(3):
  7. if dp[i] != -1:
  8. tmp[(i+n)%3] = max(tmp[(i+n)%3], dp[i]+n)
  9. dp = tmp
  10. return dp[0]

方法二:暴力 O(nlogn)

  1. class Solution:
  2. def maxSumDivThree(self, nums: List[int]) -> int:
  3. n1, n2 = [], []
  4. ans = 0
  5. for num in nums:
  6. if num % 3 == 0:
  7. ans += num
  8. elif num % 3 == 1:
  9. n1.append(num)
  10. ans += num
  11. else:
  12. n2.append(num)
  13. ans += num
  14. n1.sort(reverse=True)
  15. n2.sort(reverse=True)
  16.  
  17. if len(n1) % 3 == len(n2) % 3:
  18. return ans
  19.  
  20. if len(n1) % 3 > len(n2) % 3:
  21. n1, n2 = n2, n1
  22.  
  23. if len(n1) % 3 == 0 and len(n2) % 3 == 1:
  24. if not n1: return ans - n2[-1]
  25. return ans - min(n2[-1], n1[-1] + n1[-2])
  26. if len(n1) % 3 == 0 and len(n2) % 3 == 2:
  27. if not n1: return ans - n2[-1] - n2[-2]
  28. return ans - min(n1[-1], n2[-1] + n2[-2])
  29. if len(n1) % 3 == 1 and len(n2) % 3 == 2:
  30. if len(n1) == 1: return ans - n2[-1]
  31. return ans - min(n2[-1], n1[-1] + n1[-2])

leetcode-163周赛-1262-可被3整除的最大和的更多相关文章

  1. Leetcode 1262. 可被三整除的最大和

    题目:给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和. 示例 1: 输入:nums = [3,6,5,1,8] 输出:18 解释:选出数字 3, 6, 1 和 8,它们的和是 18( ...

  2. LeetCode 5365. 可被三整除的最大和 Greatest Sum Divisible by Three

    地址 https://www.acwing.com/solution/leetcode/content/6340/ 题目描述给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和. 示例 : ...

  3. LeetCode 163. Missing Ranges (缺失的区间)$

    Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...

  4. Leetcode 1013. 总持续时间可被 60 整除的歌曲

    1013. 总持续时间可被 60 整除的歌曲  显示英文描述 我的提交返回竞赛   用户通过次数450 用户尝试次数595 通过次数456 提交次数1236 题目难度Easy 在歌曲列表中,第 i 首 ...

  5. [leetcode]163. Missing Ranges缺失范围

    Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...

  6. [LeetCode] 163. Missing Ranges 缺失区间

    Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...

  7. LeetCode双周赛#35

    1589. 所有排列中的最大和 #差分 #贪心 题目链接 题意 给定整数数组nums,以及查询数组requests,其中requests[i] = [starti, endi] .第i个查询求 num ...

  8. 【LeetCode】974. 和可被 K 整除的子数组

    974. 和可被 K 整除的子数组 知识点:数组:前缀和: 题目描述 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目. 示例 输入:A = [4,5,0,-2,-3, ...

  9. ✡ leetcode 163. Missing Ranges 找出缺失范围 --------- java

    Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...

  10. [LeetCode#163] Missing Ranges

    Problem: Given a sorted integer array where the range of elements are [lower, upper] inclusive, retu ...

随机推荐

  1. 如何在Mac上将视频刻录到DVD / ISO文件

    如果您希望将喜爱的视频转换为DVD / Blu-ray光盘以进行物理备份或播放,则Mac版Wondershare UniConverter可以专业地完成任务.今天的教程就是如何在Mac上轻松刻录DVD ...

  2. Navicat连接MySQL8+时出现2059报错

    当我们连接时,会报2059错误 在用navicat连接MySQL8+时会出现2059错误,这是由于新版本的MySQL使用的是caching_sha2_password验证方式,但此时的navicat还 ...

  3. linux软件包rpm的使用

    一rpm包管理器 (一)rpm的介绍 rpm不仅是文件的后缀,也是一个工具,外部命令,程序包管理器 功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装.卸载. ...

  4. NOIWC2019 懵逼记

    弱省蒟蒻,第一次也是最后一次来冬令营.. Day [-inf,-1] \(woc\)咋啥都听不懂,没错在下划水王. Day 0 白天上课继续划水..晚上跑去试机,骗了半天交互的分就滚了..半夜里竟然睡 ...

  5. [CSP-S模拟测试]:计划(前缀和)

    题目传送门(内部题32) 输入格式 第一行,三个正整数$n,m,q$.第二行,$n$个正整数$a_i$,保证$1\leqslant a_i\leqslant n$.接下来$q$行,每行两个正整数$k, ...

  6. linux教程及常用命令手册

    Linux 教程 Linux 教程.Linux 简介.Linux 安装.Linux 系统启动过程.Linux 系统目录结构.Linux 忘记密码解决方法.Linux 远程登录.Linux 文件基本属性 ...

  7. 一.jenkins安装(windows环境)

    前提:jdk等已安装 jenkins下载地址:https://jenkins.io/download/ 以我目前的知识记录两种启动方式: 1.直接下载war包 通过   java -jar jenki ...

  8. LInux终端中Ctrl+S卡死

    因为初学Linux,在vim中写东西是总是喜欢按Ctrl+s来保存内容导致终端突然卡主,然后上网查资料发现了Ctrl+s 暂停屏幕输出[锁住终端]而对应的按键是Ctrl+q 恢复屏幕输出[解锁终端]

  9. [转]DrawPrimitive 详解Direct3DDevice8

    Direct3DDevice8 函数 05-39  DrawPrimitive 详解 费了好大的劲,终于搞清楚 DirectX 3D 三维图像中 DrawPrimitive 的用法(自嘲:未必). D ...

  10. laravel生成key

    安装laravel之后要设置一个随即字符串作为应用密钥(key),如果你是通过composer或者laravel安装器安装的 这个key已经自动生成并设置了. 一般情况下这个key为32位长度字符串. ...