Leetcode2928. 给小朋友们分糖果 I
Every day a Leetcode
题目来源:2928. 给小朋友们分糖果 I
解法1:暴力
枚举 3 位小朋友的糖果数,范围为 [0, limit],分别记为 i、j、k。
当满足 i + j + k == n 时,答案 +1。
代码:
/** @lc app=leetcode.cn id=2928 lang=cpp** [2928] 给小朋友们分糖果 I*/// @lc code=start// 暴力class Solution
{
public:int distributeCandies(int n, int limit){int count = 0;for (int i = 0; i <= limit; i++)for (int j = 0; j <= limit; j++)for (int k = 0; k <= limit; k++)if (i + j + k == n)count++;return count;}
};
// @lc code=end
结果:

复杂度分析:
时间复杂度:O(limit3),其中 limit 是 1 名小朋友能得到的糖果数的最大值。
空间复杂度:O(1)。
解法2:一次遍历
将第 1 个小朋友得到的糖果数记为 i,第 2 个小朋友和第 3 个小朋友得到的糖果总数为 remain=n−i。由于每个小朋友得到的糖果数都不超过 limit,因此应满足如下条件:
-
第 1 个小朋友得到的糖果数的范围是 [0,limit],即 i≤limit。
-
第 2 个小朋友和第 3 个小朋友得到的糖果总数的范围是 [0,limit×2],即 0≤remain≤limit×2。
将 remain=n−i 代入,整理得到 max(0,n−limit×2)≤i≤min(n,limit)。枚举该范围中的每个 i 作为第 1 个小朋友得到的糖果数,第 2 个小朋友和第 3 个小朋友得到的糖果总数是 remain 的分配糖果的方案数计算如下:每个小朋友最多得到的糖果数是 maxCandies=min(remain,limit),最少得到的糖果数是 max(0,remain−limit),因此第 2 个小朋友和第 3 个小朋友得到的糖果总数是 remain 的分配糖果的方案数是 maxCandies−minCandies+1。
遍历所有的 i 之后,即可得到分配糖果的方案数。
代码:
// 一次遍历class Solution
{
public:int distributeCandies(int n, int limit){if (n > 3 * limit)return 0;int count = 0;for (int i = max(0, n - 2 * limit); i <= min(n, limit); i++){int remain = n - i;int maxCandies = min(remain, limit);int minCandies = max(0, remain - limit);count += maxCandies - minCandies + 1;}return count;}
};
结果:

复杂度分析:
时间复杂度:O(min(n, limit)),其中 n 是分配的糖果总数,limit 是每个小朋友得到的糖果数的上限。
空间复杂度:O(1)。
解法3:容斥原理
题解:【灵茶山艾府】O(1) 容斥原理(Python/Java/C++/Go)
代码:
// 容斥原理class Solution
{int c2(int n){return n > 1 ? n * (n - 1) / 2 : 0;}public:int distributeCandies(int n, int limit){return c2(n + 2) - 3 * c2(n - limit + 1) + 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1);}
};
结果:

复杂度分析:
时间复杂度:O(1)。
空间复杂度:O(1)。
相关文章:
Leetcode2928. 给小朋友们分糖果 I
Every day a Leetcode 题目来源:2928. 给小朋友们分糖果 I 解法1:暴力 枚举 3 位小朋友的糖果数,范围为 [0, limit],分别记为 i、j、k。 当满足 i j k n 时,答案 1。 代码: /** lc appleetcode.c…...
go-zero开发入门之网关往rpc服务传递数据2
go-zero 的网关服务实际是个 go-zero 的 API 服务,也就是一个 http 服务,或者说 rest 服务。http 转 grpc 使用了开源的 grpcurl 库,当网关需要往 rpc 服务传递额外的数据,比如鉴权数据的时候,通过 http 的 header 进行…...
Cron介绍,以及常见的cron表达式
目录 一.cron介绍 1.什么是Cron? 2.Cron语法 时间字段的取值范围如下: 时间字段支持以下特殊字符: 下面是一些示例: 3.虚拟机安装cron(centos7展示) 二.常见的cron表达式 一.cron介绍 1.什么是Cron? Cron是一个…...
智能优化算法应用:基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.协作搜索算法4.实验参数设定5.算法结果6.…...
分布式训练通信NCCL之Ring-Allreduce详解
🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…...
os_util 工具类和方法的实现
一、前置说明 总体目录:《从 0-1 搭建企业级 APP 自动化测试框架》上节回顾:在 init_appium_and_devices 的实现思路分析 小节中,分析了实现 init_appium_and_devices 的思路,梳理出了必要的工具类和方法。本节目标:完…...
uview表单校验带星号
uView表单校验带星号可以通过设置required属性来实现。在uView中,可以使用组件来实现表单校验,具体步骤如下: 1、在需要校验的表单元素上添加required属性,例如: <u-form :model"detailInfo" ref"d…...
vue+element实现动态表格:根据后台返回的属性名和字段动态生成可变表格
现有一个胡萝卜厂生产不同品种的胡萝卜,为了便于客户了解产品,现需在官网展示胡萝卜信息。现有的萝卜信息:编号(id)、名称(name)、保质期(age)、特点(remark&…...
云渲染UE4像素流送搭建(winows、ubuntu单实例与多实例像素流送)
windows/ubuntu20.4下UE4.27.2像素流送 像素流送技术可以将服务器端打包的虚幻引擎应用程序在客户端的浏览器上运行,用户可以通过浏览器操作虚幻引擎应用程序,客户端无需下载虚幻引擎,本文实现两台机器通过物理介质网线实现虚幻引擎应用程序…...
Unity VR Pico apk安装失败:INSTALL_FAILED_UPDATE_INCOMPATIBLE
我的报错: PICO4企业版。安装apk,报错“安装失败。(所属的Unity项目打包的apk,被我在同一台pico4安装了20次) 调试方法: PIco4发布使用UNITY开发的Vr应用,格式为apk,安装的时候发生…...
Prompt 提示工程学习笔记
一、Prompt设计的四个关键要素: 任务描述、输入数据、上下文信息、提示风格 (1)任务描述:描述想要让LLM遵循的指令。描述应详细清晰,可进一步使用关键词突出特殊设置,从而更好地指导LLM工作。 ࿰…...
STM32实现三个小灯亮
led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_P…...
1861_什么是H桥
Grey 全部学习内容汇总: GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1861_什么是H桥 H桥电路可以…...
【计算机四级(网络工程师)笔记】操作系统运行机制
目录 一、中央处理器(CPU) 1.1CPU的状态 1.2指令分类 二、寄存器 2.1寄存器分类 2.2程序状态字(PSW) 三、系统调用 3.1系统调用与一般过程调用的区别 3.2系统调用的分类 四、中断与异常 4.1中断 4.2异常 🌈嗨ÿ…...
Swagger快速入门
1、Swagger快速入门 1.1 swagger介绍 官网:https://swagger.io/ Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 功能主要包含以下几点: A. 使得前后端分离开发更加方便,有利于团队协作…...
数据结构之<堆>的介绍
1.简介 堆是一种特殊的数据结构,通常用于实现优先队列。堆是一个可以被看作近似完全二叉树的结构,并且具有一些特殊的性质,根据这些性质,堆被分为最大堆(或者大根堆,大顶堆)和最小堆两种。 2.…...
使用Ubuntu22+Minikube快速搭建K8S开发环境
安装Vmware 这一步,可以参考我的如下课程。 安装Ubuntu22 下载ISO镜像 这里我推荐从清华镜像源下载,速度会快非常多。 下载地址:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.3/ 如果你报名了我的这门视频课程…...
【中小型企业网络实战案例 二】配置网络互连互通
【中小型企业网络实战案例 一】规划、需求和基本配置-CSDN博客 热门IT技术视频教程:https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 配置接入层交换机 1.以接入交换机ACC1为例,创建ACC1的业务VLAN 10和20。 <…...
Azure Machine Learning - Azure OpenAI GPT 3.5 Turbo 微调教程
本教程将引导你在Azure平台完成对 gpt-35-turbo-0613 模型的微调。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师&…...
运维大模型探索之 Text2PromQL 问答机器人
作者:陈昆仪(图杨) 大家下午好,我是来自阿里云可观测团队的算法工程师陈昆仪。今天分享的主题是“和我交谈并获得您想要的PromQL”。今天我跟大家分享在将AIGC技术运用到可观测领域的探索。 今天分享主要包括5个部分:…...
Universal x86 Tuning Utility:解锁AMD/Intel设备隐藏性能的五大实用场景
Universal x86 Tuning Utility:解锁AMD/Intel设备隐藏性能的五大实用场景 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utilit…...
从LeGO-LOAM到FAST-LIO2:Patchwork地面分割如何提升SLAM建图与定位精度?
Patchwork地面分割算法在激光SLAM中的实战优化:从原理到性能提升 激光雷达SLAM技术正面临复杂环境下的新挑战——如何从海量点云中快速准确地分离地面点,成为提升建图与定位精度的关键。传统均匀网格划分方法在远距离区域容易失效,而Patchwor…...
别再只用MSE了!NeurIPS 2021新思路:用‘不确定性’给图像超分模型加个‘注意力’,实测EDSR/RCAN效果提升
超越MSE:用不确定性驱动损失重塑图像超分辨率训练范式 当你在深夜调试一个超分辨率模型时,是否也曾对着那些模糊的纹理区域陷入沉思?传统MSE损失平等对待每个像素的"民主原则",恰恰成为了制约模型突破的瓶颈。2021年Neu…...
老系统别大意:手把手复现JBoss CVE-2015-7501反序列化漏洞(附Docker靶场搭建)
老系统安全警钟:实战复现JBoss反序列化漏洞与防御思考 老旧系统就像企业网络中的"定时炸弹",看似平静却暗藏危机。2015年曝光的JBoss反序列化漏洞(CVE-2015-7501)至今仍在不少企业的内网系统中存在,成为攻击…...
从RCRB到BAR:手把手教你理解PCIe设备的地址空间与配置(附实战配置流程)
深入解析PCIe设备地址空间:从RCRB到BAR的实战指南 在嵌入式系统与高性能计算领域,PCIe总线作为连接CPU与外围设备的核心通道,其地址空间配置的准确性直接决定了系统能否稳定运行。本文将带您深入PCIe设备的硬件视角,揭示RCRB与BAR…...
Phi-3.5-mini-instruct部署教程:vLLM服务容器化+Prometheus指标暴露配置
Phi-3.5-mini-instruct部署教程:vLLM服务容器化Prometheus指标暴露配置 1. 模型简介 Phi-3.5-mini-instruct 是一个轻量级的开放模型,属于Phi-3模型家族。它基于高质量的数据集构建,特别关注推理密集型任务。该模型支持128K令牌的上下文长度…...
终极指南:如何彻底解锁《原神》帧率限制,实现高刷新率游戏体验
终极指南:如何彻底解锁《原神》帧率限制,实现高刷新率游戏体验 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否在游玩《原神》时感觉60FPS的帧率限制让你的…...
C/C++面试八股文精讲:从指针到网络编程的实战要点
1. 指针:C/C的灵魂操作 指针是C/C最核心也最让初学者头疼的概念。我当年第一次接触指针时,完全不明白这个"地址"到底有什么用。直到后来做图像处理项目时,需要直接操作内存中的像素数据,才真正体会到指针的强大。 指针变…...
别再为CANoe工程配置发愁了!手把手教你从零搭建一个真实的2路CAN总线仿真环境(附DBC文件加载技巧)
从零构建2路CAN总线仿真环境:CANoe实战避坑指南 当第一次打开Vector CANoe软件时,许多工程师会被复杂的界面和配置选项所困扰。特别是当需要搭建一个真实的2路CAN总线仿真环境时,从License检查到DBC文件加载的每个环节都可能成为新手的技术陷…...
ptp4l实战:从零到一,在Linux上构建高精度PTP时钟同步网络
1. 为什么需要高精度时钟同步? 想象一下,你正在参加一场线上拍卖会,出价截止时间精确到毫秒级别。如果服务器之间的时间不同步,有人可能因为时间误差而错失竞拍机会。这就是高精度时钟同步的价值所在——在金融交易、5G通信、工业…...
