分糖果问题-----medium
1、题目描述
力扣原题:原题链接
优秀题解:二分搜索类问题
力扣https://leetcode-cn.com/problems/maximum-candies-allocated-to-k-children/solution/by-relll-1037-dhhf/
2、代码:
class Solution {public int maximumCandies(int[] candies, long k) {//二分法 分糖果int max = candies[0];for(int candy:candies) max = Math.max(max,candy);//每个孩子最多能分max个糖果int left =0,right=max;while(left<right){//右边主动收缩应该主动偏右int mid = left+(right-left+1)/2;if(getkids(candies,mid)<k){//减治法 不行的先排除//不够分这么多孩子,那么每个孩子分少一点 向左查找right = mid-1;}else{//刚好够分或者分多了 向右查找 目的是找到每个孩子可以分到的最大糖果数目left=mid;}}return left;}//当 每个孩子分candiansNum颗糖果时,最多可以分给几个孩子private long getkids(int[] candies,int candiedNum){long count =0;for(int candy:candies){count += candy/candiedNum;}return count;}
}
优秀题解2
力扣https://leetcode-cn.com/problems/maximum-candies-allocated-to-k-children/solution/5219-mei-ge-xiao-hai-zui-duo-neng-fen-da-375p/解题思路
1.计算出总共有多少糖果
2.计算每个孩子理论上平均能分多少个糖果
3.遍历数组,找到满足条件的最大值
4.二分优化
class Solution {public int maximumCandies(int[] candies, long k) {long sum=0L;for(int i:candies){ //求和sum+=(long)(i);}if(sum<k){ return 0;}if(sum==k){return 1;}long max=sum/k; //求平均值for(long i=max;i>=0;i--){ //从最大值开始遍历,long cnt=0l;for(int num:candies){cnt+=(long)(num)/i; //看num能分出几个i}if(cnt>=k){ //直到找到第一个满足条件的最大值,返回return (int)i;}}return 0;}
}
===================================================================》
分割线
=============================
类型题目2 : 完成旅行的最少时间
1、原题地址:
力扣原题链接https://leetcode-cn.com/problems/minimum-time-to-complete-trips/
2、解题思路
怎么想到二分法的!!!!!对花费的时间进行二分查找初始最小时间为0,最大时间为只用一辆速度最快的车跑完所有旅途花费的时间取中间时间mid,求mid内能完成得旅途数目trips1.若trips>=totalTrips,表明时间还可以优化,部分车可能多跑了,向左查找right=mid2.若trips<totalTrips,表明时间不足,全部车出动了旅途还没跑完,向右查找left=mid+1坑点:注意返回类型为long时间复杂度:O(MlogN),空间复杂度:O(1)
class Solution {public long minimumTime(int[] time, int totalTrips) {/*怎么想到二分法的!!!!!对花费的时间进行二分查找初始最小时间为0,最大时间为只用一辆速度最快的车跑完所有旅途花费的时间取中间时间mid,求mid内能完成得旅途数目trips1.若trips>=totalTrips,表明时间还可以优化,部分车可能多跑了,向左查找right=mid2.若trips<totalTrips,表明时间不足,全部车出动了旅途还没跑完,向右查找left=mid+1坑点:注意返回类型为long时间复杂度:O(MlogN),空间复杂度:O(1)*/// 先将时间排序Arrays.sort(time);// 计算最长时间:全部旅途都用速度最快的一辆车跑完long right = 1L * time[0] * totalTrips;long left = 0;// 进行二分查找while(left < right) {long mid = (left + right) >>> 1;// 计算mid时间能走的旅途次数long trips = 0;for(int t : time) {// 当mid时间不足以完成一趟旅途,接下来的车更不可能,退出if(mid < t) {break;}// 累加每辆车在mid时间内能完成的旅行次数trips += mid / t;}// 判断trips与totalTrips的大小关系进行转移if(trips >= totalTrips) {// 旅途数超标,时间还可以再优化,向左查找right = mid;}else {// 旅途数不足,时间不足,向右查找left = mid + 1;}}// 最后left=right,任意返回一个即可return left;}
}
分糖果问题-----medium相关推荐
- LeetCode简单题之分糖果 II
题目 排排坐,分糖果. 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友. 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小 ...
- 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...
- 4702: 分糖果系列一
4702: 分糖果系列一 Description Oliver分别有币值为1,3,5,7,9,13元的硬币a,b,c,d,e,f枚.一天她去大学生超市买糖吃,糖的价格为g元. 问:用Oliver仅有的 ...
- C语言 · 分糖果
历届试题 分糖果 时间限制:1.0s 内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边 ...
- 题目1550:分糖果
题目描述: 给从左至右排好队的小朋友们分糖果, 要求: 1.每个小朋友都有一个得分,任意两个相邻的小朋友,得分较高的所得的糖果必须大于得分较低的,相等则不作要求. 2.每个小朋友至少获得一个糖果. 求 ...
- 蓝桥杯 历届试题 分糖果(模拟)
传送门 题目描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而 ...
- 【快乐水题】575. 分糖果
原题: 力扣链接:575. 分糖果 题目简述: Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] .Alice 注意到她的体重正在增长,所以前去拜访了一位医生. 医生建议 ...
- 牛客题霸 [分糖果问题] C++题解/答案
牛客题霸 [分糖果问题] C++题解/答案 题目描述 一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起码分到一个糖果. 任意两个相邻的孩子之间,得分较多的孩子必须拿多 ...
- leetcode1103. 分糖果 II 该模拟就模拟,别老想着优化
排排坐,分糖果. 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友. 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 ...
最新文章
- Nat. Mach. Intell. | 利用条件循环神经网络生成特定性质分子
- Hadoop的伪分布式安装
- 看看样条插值区间查找函数写的多细腻
- Action profile: ZAVADDR和ZAVPERS
- java集合体检套餐管理系统_体检套餐管理系统
- gprs 睡眠模式_GPRS的完整形式是什么?
- 浏览器展示CSS伪类的动画和过渡效果应用
- OpenSSL历史版本整理
- SharePoint 软件边界及限制
- zookeeper集群节点为什么是奇数个
- VMware运维工程师常用工具介绍
- H5+ 二维码扫描功能
- STM8S103之tim4普通定时器
- 【SAP】实施方法论-ASAP
- excel熵值法计算权重_Pointer分享:评价得分计算—确立权重的方法
- h5 android 重力 晃动,H5案例分享:html5重力感应事件
- 近两年最流行的面试题
- 东原仁知服务招股书失效:主营业务严重依赖迪马集团,曾多次更名
- help efun matlab,Matlab优化工具箱在函数最值求解中的应用.pdf
- google v8 实战 -- 构建v8