• 2023-09-19力扣每日一题


    链接:

    2560. 打家劫舍 IV

    题意

    n个数字,相邻不能选,选择的结果为 选中的数字中的最大数字,要求最少选k个数字

    求这个结果最小能是多少

    怎么就从DP变成二分了呢?

    关键字:最大的最小

    最少选k个数字,又要结果最小,那尽量少选且使选中的最大数字最小,则题目变成:选择k个数字,使<选中的数字中最大的数字>最小(选的越少,选取条件越宽松,则理论上能取的数字越小)

    二分答案,Check逻辑:贪心,能选的就选上,只要满足小于等于temp_ans就先选上,选够了k个说明这个temp_ans合法

    实际代码:

    #include
    using namespace std;
    bool check(vector& nums,int limit, int k)
    {
    	int xz=0;
    	for(int i=0;i=k) return true;
    			i++;
    		}
    	}
    	return false;
    }
    int minCapability(vector& nums, int k)
    {
    	int l=0,r=0;
    	for(auto num:nums) r=max(r,num);
    	
    	while(l>1;
    		cout<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    限制:

    • 1 <= nums.length <= 105
    • 1 <= nums[i] <= 109
    • 1 <= k <= (nums.length + 1)/2
  • 相关阅读:
    VMware 系列:戴尔服务器配置(格式数据、RAID5、安装ESXI)以及相关问题
    每天一个设计模式之工厂模式(无工厂、简单工厂、工厂方法、抽象工厂)
    linux和windows的共享文件夹的设置(ubuntu18.04)
    Linux网络编程- inet_pton()函数
    Java 修改文件时间不生效以及解决办法
    密码学【对称加密-DES\AES】
    Vue3应用API——component、directive
    RabbitMQ系列【16】AmqpTemplate接口详解
    18.2.1 创建分区表
    【tio-websocket】12、应用层包—Packet
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/133049755