首页 > 其他分享 >力扣每日一题 6/3

力扣每日一题 6/3

时间:2024-06-04 10:29:35浏览次数:15  
标签:people 每日 力扣 num 数组 ans 小朋友 糖果

1103.分糖果II[简单]

题目:

排排坐,分糖果。

我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。

给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。

然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。

重复上述过程(每次都比上一次多给出一颗糖果,当到达队伍终点后再次从队伍起点开始),直到我们分完所有的糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。

返回一个长度为 num_people、元素之和为 candies 的数组,以表示糖果的最终分发情况(即 ans[i] 表示第 i 个小朋友分到的糖果数)。

示例 1:

输入:candies = 7, num_people = 4
输出:[1,2,3,1]
解释:
第一次,ans[0] += 1,数组变为 [1,0,0,0]。
第二次,ans[1] += 2,数组变为 [1,2,0,0]。
第三次,ans[2] += 3,数组变为 [1,2,3,0]。
第四次,ans[3] += 1(因为此时只剩下 1 颗糖果),最终数组变为 [1,2,3,1]。

示例 2:

输入:candies = 10, num_people = 3
输出:[5,2,3]
解释:
第一次,ans[0] += 1,数组变为 [1,0,0]。
第二次,ans[1] += 2,数组变为 [1,2,0]。
第三次,ans[2] += 3,数组变为 [1,2,3]。
第四次,ans[0] += 4,最终数组变为 [5,2,3]。

提示:

  • 1 <= candies <= 10^9
  • 1 <= num_people <= 1000

题目分析:

         这道题直接可以暴力模拟,然后取模记录数据,加到dp列表里面,然后返回dp列表就可以了。

代码实现:

class Solution:
    def distributeCandies(self, candies: int, num_people: int) -> List[int]:
        a=1
        dp=[0]*(num_people+1)
        n=1
        dp[1]=1
        while a<=candies:
            n+=1
            if n%num_people==0:
                h=num_people
            else: h=n%num_people
            a=((n+1)*(n+2))//2  # 预测下一个
            dp[h]+=n
        ch=candies-(n*(n+1))//2
        if h!=num_people:
            dp[h+1]+=ch
        else:
            dp[1]+=ch
        return dp[1:]

总结:

         这段代码可以实现将指定数量的糖果分给指定数量的人。它通过一个循环来逐步分发糖果,直到所有糖果都被分完。然后调整分发列表以考虑可能的剩余糖果,并返回最终的分发列表。

标签:people,每日,力扣,num,数组,ans,小朋友,糖果
From: https://blog.csdn.net/Xxy_1008/article/details/139417931

相关文章

  • 每日练习——牛客周赛 Round 45
    小紫的总分题目描述登录—专业IT笔试面试备考平台_牛客网运行代码#include<iostream>usingnamespacestd;intmain(){inta,b,c,d,e,sum;cin>>a>>b>>c>>d>>e;sum=a+b+c+d+e;if(sum>100){cout<<"YES";}else......
  • 【前端每日基础】day42——关于 Vuex 共有几个属性,哪里可以书写同步任务,哪里可以书写
    Vuex是Vue.js的一个状态管理模式,它集中式地存储和管理应用的所有组件的状态。Vuex提供了以下几个核心属性,每个属性在状态管理中有不同的用途:Vuex共有的几个属性:State:用于存储应用的状态。可以通过this.$store.state或在组件中通过mapState辅助函数访问。Gette......
  • 算法第四天力扣第704题:二分查找
    704.二分查找的题目链接如下:https://leetcode.cn/problems/binary-search/https://leetcode.cn/problems/binary-search/  给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 ......
  • 力扣第五题 5.最长回文子串
    目录问题解题思路动态规划中心扩展官方解法1.动态规划2.中心扩展算法3.Manacher 算法问题解题思路我们的回文子串有两种情况,一种是左与右相同,一种是左与右+1的位置所以我们就可以根据这个条件判断是否为子串,然后再扩大判断。还可以使用中心扩展的方式,就判断左......
  • [每日一练]关于上升的温度查询
    该题目来自于力扣:197.上升的温度-力扣(LeetCode)题目要求:表: Weather+---------------+---------+|ColumnName|Type|+---------------+---------+|id|int||recordDate|date||temperature|int|+---------------+--......
  • 力扣1168水资源优化
    题目这个题目首先有节点,有双向边,而且要求最少总成本,那么我们最先想到的应该是最小生成树。算法逻辑 在最小生成树中有一个prim算法,个人觉得是和dijkstra非常相似甚至一模一样的,基于贪心思想的一种算法。prim的算法过程:首先找到一个一定存在的节点,然后从这个结点开始......
  • 力扣2891每日一题题解
    题目:给你一个仅由小写英文字母组成的字符串 s 。如果一个字符串仅由单一字符组成,那么它被称为 特殊 字符串。例如,字符串 "abc" 不是特殊字符串,而字符串 "ddd"、"zz" 和 "f" 是特殊字符串。返回在 s 中出现 至少三次 的 最长特殊子字符串 的长度,如果不存在出......
  • 每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
    相遇原题链接登录—专业IT笔试面试备考平台_牛客网题目描述运行代码#include<iostream>usingnamespacestd;intmain(){inta,b;cin>>a>>b;if(a==b){cout<<"p";}elseif(a-b==1||(a==1&&b==3)){cout<<&qu......
  • C语言练习题之——从简单到烧脑(13)(每日两道)
    打印爱心1.1:普通输出爱心#include<stdio.h>intmain(){ printf("******************\n");//7(代表边上的空格) printf("******************************\n");//4 printf("************************************\n&quo......
  • 力扣 2642. 设计可以求最短路径的图类 python AC
    朴素dijkstraclassGraph:def__init__(self,n,edges):self.n=nself.INF=float('inf')self.matrix=[[self.INF]*nfor_inrange(n)]foru,v,winedges:self.matrix[u][v]=wdefaddEdg......