文章目录

  • 前言
  • 一、特殊数组的特征值
    • 思路
  • 二、在D天内送达包裹的能力
    • 思路
    • 题目来源
  • 总结

前言

打卡

一、特殊数组的特征值

思路

题目来源

class Solution {public:int specialArray(vector<int>& nums) {int left = 1, right = 100;while (left <= right) {int mid = (left + right) >> 1;int cnt = 0;    // 个数设置为0for (int num : nums) {  // 计算数组中 >= mid的元素个数if (num >= mid) cnt++;}if (cnt == mid) {   // 刚好找到插入位置return mid;} else if (cnt > mid) {   // 在右侧寻找left = mid + 1;} else {    // 在左侧寻找right = mid - 1;}}return -1;  // 没找到}
};

二、在D天内送达包裹的能力

思路

假设当船的运载能力为 x 时,我们可以在 days 天内运送完所有包裹,那么只要运载能力大于 x,我们同样可以在days 天内运送完所有包裹:我们只需要使用运载能力为 x时的运送方法即可。
确定左右边界,这道题很显然,右边界为sum(weight),那么左边界该如何确定呢?
既然我们需要装载货物,根据示例最少每次也要送一批货物出去,那么左边界很显然为max(weight)。
找到左右边界,套路执行二分查找就能获取最终结果了。

题目来源

class Solution {public:int Judge(vector<int>& weights, int mid,int D){int sum=0,days=1;for(int i=0;i<weights.size();i++){   //重量超了,清零从新的一天重新送快递if(sum+weights[i]>mid){days++;sum=0;}sum+=weights[i];}return days<=D;}int shipWithinDays(vector<int>& weights, int D) {int n=weights.size();//定义上下边界int low=0;for(auto w:weights) low=max(low,w);int high=accumulate(weights.begin(),weights.end(),0);while(low<high){int mid=low+(high-low)/2;//不大于规定天数,缩小上限看看,看看能压缩到一天最少送多少(能怎么偷懒)if(Judge(weights,mid,D)){high=mid;}else{//天数超了,需要增加每天运送快递重量low=mid+1;}}return low;}
};

总结

南有乔木,不可休思。我写这句话的时候最想的就是你。

【算法打卡(二分查找)---7.12】相关推荐

  1. c语言二分法查找一个数_算法简解-二分查找

    读书不记录=没读,始终是我的信条·····最近因为要参加竞赛,发现自己真的差的很远,所以打算重新开始学习一遍算法及AI的相关数学知识,相信很多人都是闻数学,理工科色变,之前也是觉得上数理课太难了,真的 ...

  2. 算法前戏 递归 二分查找 列表查找

    一.递归 概念: 函数直接或者间接的调用自身算法的过程,则该函数称为递归函数.在计算机编写程序中,递归算法对解决一大类问题是十分有效的. 特点: ①递归就是在过程或者函数里调用自身. ②在使用递归策略 ...

  3. java 二分搜索获得大于目标数的第一位_程序员数据结构算法编程,二分查找搜索算法的原理与应用介绍!...

    本文来讲一种搜索算法,即二分搜索算法,通常在面试时也会被问到. 我们先来看一个例子,在图书馆通常是根据查到的编号去找书,可以在书架上按顺序一本本地查找,也可以找到一本书不符合预期时,再跳过一大部分书再 ...

  4. C++算法五:二分查找(折半)查找

    二分查找是对排序的数据进行排序,查找效率非常高. 2的20次方是100万,就是(1M),折半查找100万个数据只需要20次 2的30次方就是10亿,也就是(1G),折半查找只需要30次 #includ ...

  5. 常用算法1 - 快速排序 二分查找

    1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...

  6. 大前端算法入门之二分查找

    现如今面试大厂的前端岗位对于应聘者的算法技巧要求越来越高,现在的前端已经不仅仅是制作页面就能够交差的,所以掌握算法技巧是很重要的,下面小千就来给大家介绍一个二分查找算法. 二分查找 所谓的算法都不是直 ...

  7. 算法(一):二分查找法

    算法基础: 一.大O表示法: 指示算法的速度有多快,用于指出随数量的增大,算法的所需步骤增加的速度,常见的大O运行时间(时间复杂度): O(1)表示常数阶时间复杂度 O(log n),也叫对数时间复杂 ...

  8. 《算法图解》——二分查找

    1    二分查找(从中间元素开始查找)的速度比简单查找快的多. 2    O(logn)比O(n)快.需要搜索的元素越多,前者比后者就快得越多. 3    算法运行时间并不以秒为单位. 4    算 ...

  9. [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

    LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...

  10. 经典算法题:二分查找

    二分查找 题目来源于京东校园招聘笔试真题 题目描述 有一个有序表为 {1,5,8,11,19,22,31,35,40,45,48,49,50} ,当二分查找值为 48 的结点时,查找成功需要比较的次数 ...

最新文章

  1. ssm整合之七 事务以及404页面处理
  2. 参加智能车大赛还是电赛?在做电磁炮中我找到了答案
  3. win10怎么修改计算机桌面存储路径,Win10系统桌面储存位置如何设置
  4. 华为p40 pro原理图_4188起 华为P40/Pro/Pro+国行发布 顶配8888 河图正式上线!
  5. python界面gui随机生成器_Python 实现的、带GUI界面的词云生成器
  6. 算法训练 纪念品分组(java)
  7. 微软发布 VS Code Jupyter 插件!不止 Python,多语言的 Jupyter Notebook支持来了!
  8. Mybatis 系列使用记录
  9. GD32MCU硬件I2C学习(一)
  10. 初识app之产品需求分析文档设计
  11. 南京大学计算机 国家重点实验室,南京大学
  12. 初学JAVA项目(四、魔域:文字RPG游戏)
  13. win7安装打印机 计算机,win7添加网络打印机的详细步骤【图解】
  14. lattice开发错误集合
  15. 利盟Lexmark CX317 打印机驱动
  16. Epic League 推出支持 Free to Earn 的 RPG 游戏 Dark Throne
  17. linux系统离线安装miniconda3 及创建python环境
  18. 基于ThinkPHP框架的学生管理系统+留言板后台管理系统
  19. 有哪些适合放在程序员办公桌上的高逼格物件?
  20. matlab编码流程图,高手来帮我看看该怎么画这些代码的流程图

热门文章

  1. 【面试题】将ip地址转换成整数
  2. 软件工程基础第一次作业
  3. 阿里云七天训练营学习(4):服务器管理软件(putty、ccaa)
  4. 印度软件和中国软件工程师_印度的软件公司类型
  5. 解决微信内置浏览器屏蔽下载链接问题
  6. 创业公司技术总监出去面试,被拒后的感悟
  7. 小虎电商浏览器:淘数据店铺数据分析如何?数据精确吗?
  8. 海康萤石云 H5移动端和PC端云播放本地监控摄像头
  9. 语音识别学习记录 [kaldi中的openfst]
  10. 猎头职场:为什么你职场总碌碌无为