【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))
相关推荐
孟健10 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞12 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽15 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程19 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪19 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook19 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
花酒锄作田1 天前
使用 pkgutil 实现动态插件系统
python
前端付豪1 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽2 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
老赵全栈实战2 天前
Pydantic配置管理最佳实践(一)
python