首页 > 编程语言 >二分算法

二分算法

时间:2022-12-29 17:13:31浏览次数:57  
标签:二分 nums int price 中等 mid 力扣 算法

二分算法题目合集


题目 来源 难度
袋子里数目最少的球 力扣 中等
礼盒的最大甜蜜度 力扣 中等
两球之间的磁力 力扣 中等
机器人跳跃问题 Acwing 中等
分巧克力 Acwing 中等
分割数组的最大值 力扣 困难


袋子里数目最少的球
class Solution {
public:
    int minimumSize(vector<int>& nums, int maxOperations) {
        int left = 1, right = *max_element(nums.begin(),nums.end());
        while(left < right){
            long long ans = 0;
            int mid = left + right >> 1;
            for(int x:nums) ans += (x-1)/mid;
            if(ans <= maxOperations) right = mid;
            else left = mid + 1;
        }
    return left;
    }
};

礼物的最大甜蜜度

class Solution {
public:
    int maximumTastiness(vector<int>& price, int k) {
        sort(price.begin(),price.end());
        int l = 0,r = 1e9;
        while(l < r){
            int mid = l + r + 1 >> 1;
            if(check(price,k,mid)) l = mid;
            else r = mid - 1;
        }
        return l;
    }

    bool check(vector<int> &price,int k,int mid){
        int cnt = 1;
        int cur = price[0];
        for(int i=1;i<price.size();i++){
            if(price[i] - cur >= mid){
                cnt++;
                cur = price[i];
            }
        }
        return cnt >= k;
    }
};

标签:二分,nums,int,price,中等,mid,力扣,算法
From: https://www.cnblogs.com/xuechuyang/p/17013015.html

相关文章

  • 算法系列-快速排序
     今天重温一下快速排序,快速排序主要是通过从右向左和从左向右扫描,当左边的扫描标记到比基准值大的停下,右边的扫描标记标记到比基准值小的停下,然后交换左右标记处的值......
  • 天池-安泰杯跨境电商智能算法大赛(冠军)方案分享
    竞赛分享天池-安泰杯跨境电商智能算法大赛​--冠军团队:法国南部团队成员:Rain/Fish/楠枰在19年9月下旬结束的"安泰杯"跨境电商智能算法大赛中,来自京东零售的法国南部队伍成功......
  • 每日算法之矩形覆盖
    JZ70矩形覆盖题目我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,从同一个方向看总共有多少种不同的方......
  • 每日算法之把字符串转换成整数(atoi)
    JZ67把字符串转换成整数(atoi)题目写一个函数StrToInt,实现把字符串转换成整数这个功能。不能使用atoi或者其他类似的库函数。传入的字符串可能有以下部分组成:1......
  • 类欧几里得算法(部分)
    ##Preface欧几里得算法,就是辗转相除法。gcd(i,j)=gcd(j,i%j)##定义定义函数##推导一波显然当或者时,若当a,b均小于c怎么办?据大佬说转换成几何意义就是一条直线与x轴、y......
  • Linux内存管理-slub算法
    Slub简介Linux内核内存管理用了两个算法:伙伴算法(以页为单位的大内存)和slub算法(以字节为单位的小内存),其中slub系统运行在伙伴系统之上。slub进行内存分组管理,分......
  • m低信噪比下GPS信号的捕获算法研究,使用matlab算法进行仿真
    1.算法概述GPS系统的星座部分是由21颗工作卫星和3颗在轨备用卫星组成,其高度为20183km,这24颗卫星均匀分布在6个等间隔的、相对轨道面倾角为55º的近圆轨道上。GPS......
  • m低信噪比下GPS信号的捕获算法研究,使用matlab算法进行仿真
    1.算法概述        GPS系统的星座部分是由21颗工作卫星和3颗在轨备用卫星组成,其高度为20183km,这24颗卫星均匀分布在6个等间隔的、相对轨道面倾角为55º的近圆轨......
  • pytorch:二分类时的loss选择
    PyTorch二分类时BCELoss,CrossEntropyLoss,Sigmoid等的选择和使用这里就总结一下使用PyTorch做二分类时的几种情况:总体上来讲,有三种实现形式:最后分类层降至一维,使用sigmo......
  • 代码随想录算法训练营第一天
     今日刷题两道:数组理论基础,704.二分查找,27.移除元素**704.二分查找题目链接:https://leetcode.cn/problems/binary-search/文章讲解:https://programmercarl.com/......