【Python LeetCode 专题】每日一题

  • 2025/03
    • [2829. k-avoiding 数组的最小总和](#2829. k-avoiding 数组的最小总和)

2025/03

2829. k-avoiding 数组的最小总和

python 复制代码
class Solution:
    def minimumSum(self, n: int, k: int) -> int:
        # 思路:对任何一个正整数 x,不能同时存在 k-x
        nums = []
        ans =  2501

        def backtrace(x):
            nonlocal ans

            if sum(nums) > ans:  # 剪枝,比 ans 还大不需要考虑
                return 

            if len(nums) == n:  # 终止条件,数组塞满了
                ans = min(sum(nums), ans)
                return 

            for i in range(1, 80):
                if i not in nums and (k - i) not in nums:  # 当 k-i 不在数组中才可以选
                    nums.append(i)   # 做选择
                    backtrace(x+1)  # 递归
                    nums.pop()   # 撤销选择
            return
        
        backtrace(1)  # 从小的正整数开始
        return ans

不出意外就会超时了!

贪心吧,举例来说, 假设不能选和为 4 的数对,肯定选 1 不选 3 啊! O ( n ) O(n) O(n),

python 复制代码
class Solution:
    def minimumSum(self, n: int, k: int) -> int:
        # 思路:对任何一个正整数 x,不能同时存在 k-x
        nums = []
        sum = 0
        for i in range(1, 100):
            if len(nums) == n:  # 如果够 n 个就退出循环
                break

            if (k-i) not in nums:  # k-i 不在就塞进数组
                nums.append(i)
                sum += i
        
        return sum

过了,但是还能优化,直接上数学公式, O ( 1 ) O(1) O(1),

python 复制代码
class Solution:
    def minimumSum(self, n: int, k: int) -> int:
        # 思路:对任何一个正整数 x,不能同时存在 k-x

        if 2 * n <= k:
            return sum(range(1, n + 1))  # 注意 range 左闭右开
        part_num = k - (k // 2 + 1)
        return sum(range(1, k // 2 + 1)) + sum(range(k, n + part_num + 1))
相关推荐
南京云森杉木桩1 小时前
水利木桩源头直供,质量可靠价格更优
大数据·python
Aaron - Wistron2 小时前
Python基础教程2/4(复合数据结构)
python
小柯南敲键盘2 小时前
跨境电商图片翻译与视频字幕翻译工具推荐
python·音视频
ZC跨境爬虫2 小时前
LeetCode 13. 罗马数字转整数(多解法详解 + Java Python 实现)
java·python·leetcode
.道阻且长.2 小时前
10.LeetCode算法习题讲解--滑动窗口--最大连续为一的个数
算法·leetcode·职场和发展
machnerrn2 小时前
智慧交通系列(一)-十字路口车辆闯红灯检测告警抓拍系统(附含数据+源码+模型)
人工智能·python·深度学习
现代野蛮人2 小时前
【深度学习实验】—— 利用 RNN 模型进行心脏病预测
pytorch·python·tensorflow·ml
2601_956319883 小时前
2026年用示例、拆解和练习提升量化理解效率
人工智能·python
王志来137944730083 小时前
从分散到集成:工控服务器机箱采购如何实现“一站式”破局
运维·服务器·人工智能·python
三十岁老牛再出发3 小时前
08.18每日总结
c++·python·numpy·pandas