算法| ss 二分

  • 34.在排序数组中查找元素的第一个和最后一个位置
  • 35.搜索插入
  • 69.x的平方根
  • 875.爱吃香蕉的珂珂

34.在排序数组中查找元素的第一个和最后一个位置

/*** @param {number[]} nums* @param {number} target* @return {number[]}*/
// 思路
// 新建一个search函数,参数为是否查找第一个, true第一个 false 最后一个
// 普通二分左闭右开查找
// 当等于target时, 查找第一个,right继续前移, 查找最后一个 left继续后移,不移动会死循环
var searchRange = function (nums, target) {let firstIndex = -1;let lastIndex = -1;seach(true);seach(false);console.log([firstIndex, lastIndex]);function seach(isFindFirst) {let left = 0;let right = nums.length;while (left < right) {let mid = Math.floor((left + right) / 2);if (nums[mid] === target) {if (isFindFirst) {firstIndex = mid;//   right = mid;} else {lastIndex = mid;//   left = mid + 1;}} else if (nums[mid] > target) {right = mid;} else {left = mid + 1;}}}
};
searchRange([5, 7, 7, 8, 8, 10], 8);
// 输入:nums = [5,7,7,8,8,10], target = 8
// 输出:[3,4]

35.搜索插入

/*** @param {number[]} nums* @param {number} target* @return {number}*/
// 左闭右开 套路 left<right  right = mid left = mid+1
// 如果没有找到在最后一个right的位置上+1, 不是左+1var searchInsert = function (nums, target) {let left = 0;let right = nums.length;let ans = -1;while (left < right) {let mid = Math.floor((left + right) / 2);if (nums[mid] > target) {right = mid;} else if (nums[mid] === target) {ans = mid;break;} else {left = mid + 1;}}ans = ans === -1 ? right : ans;//   console.log(ans);//   console.log(left);return ans;
};searchInsert([1, 3, 5, 6], 5);
searchInsert([1, 3, 5, 6], 2);
// 输入: nums = [1,3,5,6], target = 5
// 输出: 2// 输入: nums = [1,3,5,6], target = 2
// 输出: 1

69.x的平方根

/*** @param {number} x* @return {number}*/
// 思路
// 使用二分获取到数的一半 来相乘,来区分条件
// while  left<=right
// 二分指针更改条件 是小于等于x left+=1 ans=mid 大于x right=mid-1
var mySqrt = function (x) {let left = 0;let right = x;let ans = -1;while (left <= right) {let mid = Math.floor((left + right) / 2);if (mid * mid <= x) {ans = mid;left += 1;} else {right = mid - 1;}}//   console.log(ans);return ans;
};
mySqrt(4);
mySqrt(8);

875.爱吃香蕉的珂珂

/*** @param {number[]} piles* @param {number} h* @return {number}*/
// 左闭右开
var minEatingSpeed = (piles, h) => {let left = 0;let right = Math.max(...piles) + 1;while (left <= right) {let mid = Math.floor((left + right) / 2);if (check(mid) <= h) {right = mid;} else {left = mid + 1;}}console.log(left);return left;function check(speed) {return piles.reduce((x, y) => x + Math.ceil(y / speed), 0);}
};
getSum([3, 6, 7, 11], 8);
getSum([30, 11, 23, 4, 20], 5);
// 输入:piles = [3,6,7,11], h = 8
// 输出:4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity学习(82)——profiler 限制帧率

实际测试发现当玩家个数增加时&#xff0c;客户端明显变的很卡&#xff0c;想知道为什么变卡了&#xff01; 1.只有玩家自己的时候 2.两个时候感觉脚本的工作量增大了 拖了一会直接炸了&#xff01;&#xff08;数据包积压把内存搞炸&#xff0c;我第一次见&#xff09; 3.我觉…

数据库的介绍分类作用特点

目录 1.概述 2.分类 2.1.关系型数据库 2.2.非关系型数据库 2.3.分布式数据库 ​​​​​​​2.4.云数据库 3.作用 4.特点 5.应用举例 5.1.MySQL ​​​​​​​5.1.1.作用 ​​​​​​​5.1.2.特点 ​​​​​​​5.1.3.应用案例 ​​​​​​​5.2.达梦 ​​​…

上位机图像处理和嵌入式模块部署(qmacvisual之tcp服务器端)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 上面一篇&#xff0c;我们谈到了tcp客户端&#xff0c;另外一种连接方法就是tcp服务器端。事实上&#xff0c;对于第三方系统&#xff0c;大多数情…

Python进阶:使用requests库轻松发送HTTP请求并获取响应

Python进阶&#xff1a;使用requests库轻松发送HTTP请求并获取响应 简介&#xff1a;本文将带您深入了解Python中强大的requests库&#xff0c;学会如何使用它发送各种HTTP请求&#xff0c;并轻松获取响应内容。无论您是初学者还是有一定经验的Python开发者&#xff0c;本文都…

ES10 学习

文章目录 1. Object.fromEntries()2. trimStart() 和 trimEnd()3. 数组的flat() 和flatMap()4. Symbol 对象的description 属性5. try ... catch(e){} 1. Object.fromEntries() Object.fromEntries() 方法允许你轻松地将键 值对列表转换为对象 let arr [["name",&qu…

《搜广推算法指南》(2024版) 重磅发布!

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 结合…

Linux系统NVME SSD上下电流程梳理

对NVMe SSD在Linux系统中执行上下电操作&#xff0c;涉及到硬件层面的电源管理以及与操作系统驱动程序的交互。以下是一个结合NVMe驱动代码原理与PCIe寄存器等信息的详细步骤说明&#xff1a; 上下电操作概述 上电操作&#xff1a;当Linux系统启动或热插拔NVMe SSD时&#xff0…

城市道路井盖破损丢失目标检测数据集VOC-1377张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;1377 标注数量(xml文件个数)&#xff1a;1377 标注类别数&#xff1a;4 标注类别名称:["jg","jg…

MuJoCo 入门教程(三)Python 绑定

系列文章目录 前言 从 2.1.2 版开始&#xff0c;MuJoCo 附带使用 pybind11 以 C 开发的本地 Python 绑定。Python API 与底层的 C API 保持一致。这导致了一些非 Python 代码结构&#xff08;如函数参数的顺序&#xff09;&#xff0c;但其好处是 API 文档适用于两种语言。 Pyt…

devtool: ‘source-map‘ 和 devtool: ‘#source-map‘的区别

devtool: ‘source-map’ 和 devtool: ‘#source-map’ 之间的区别主要在于前面的#字符。 从Webpack 4开始&#xff0c;就废弃了在devtool选项前加#的用法。 devtool: ‘source-map’ 选项意味着Webpack在构建过程中会生成独立的完整的source map文件。对于测试环境很有用&…

(React组件基础)前端八股文修炼Day6

一 类组件与函数组件有什么异同 在React中&#xff0c;类组件和函数组件是创建组件的两种主要方式。随着React的发展&#xff0c;尤其是自Hooks在React 16.8中引入以来&#xff0c;函数组件的功能变得更加强大&#xff0c;使得它们能够更加方便地与类组件相竞争。下面是类组件…

Collection与数据结构 Stack与Queue(一): 栈与Stack

1. 栈 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&…

代码随想录算法训练营第四十四天 |卡码网52. 携带研究材料 、518. 零钱兑换 II、377. 组合总和 Ⅳ

代码随想录算法训练营第四十四天 |卡码网52. 携带研究材料 、518. 零钱兑换 II、377. 组合总和 Ⅳ 卡码网52. 携带研究材料题目解法 518. 零钱兑换 II题目解法 377. 组合总和 Ⅳ题目解法 感悟 卡码网52. 携带研究材料 题目 解法 题解链接 1. #include <iostream> #inc…

C# Socket发送、接收结构体

Socket发送&#xff1a;Socket的使用 一、Socket发送结构体 结构体如下&#xff1a; [StructLayout(LayoutKind.Sequential, Pack 1)] public struct OutPoint_ST {public int LeftheartX;public int LeftHeartY;public float WidthHeart;public int RightHeartX;public in…

vscode开发ESP32问题记录

vscode 开发ESP32问题记录 1. 解决vscode中的波浪线警告 1. 解决vscode中的波浪线警告 参考链接&#xff1a;https://blog.csdn.net/fucingman/article/details/134404485 首先可以通过vscode 中的IDF插件生成模板工程&#xff0c;这样会自动创建.vscode文件夹中的一些json配…

AcWing 787. 归并排序——算法基础课题解

AcWing 787. 归并排序 文章目录 题目描述CGo模板 题目描述 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行&#xff0c;第一行包含整数 n。 第二行包含 n 个整数&#xff08;所有…

【Week-Y4】修改yolov5s中C3模块的结构,common.py文件解读

修改C3模块的结构 一、commom.py文件解析二、修改代码&#xff0c;运行train.py训练 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 &#x1f4d5;本次任务&#xff1a;将yolov5s网络模型…

自动化运维(四)第一个Ansible任务

AWX和Ansible已经安装好&#xff0c;接下来我们使用一个简单的任务&#xff0c;要学习一下怎么使用这个工具。我们首先准备一下测试环境&#xff0c;我的测试环境共有6台虚拟机&#xff0c;服务器信息如下&#xff1a; Ansible服务器192.168.110.170自动化管理服务器WEB服务器…

交换机特性解析

​1. 端口数量和类型: RJ-45端口: 最常见的端口类型,用于连接网线。 铜缆类型: 超五类、六类、七类等,影响传输速率和距离。 PoE功能: 支持为连接的设备供电,如IP电话、无线AP等。 光纤端口: 用于连接光纤,支持更长的传输距离和更高的速率。 光纤类型: 单模、多模等,影响传…

Python100个库第8个—ftfy(Unicode文本工具)

目录 专栏导读库的介绍安装用法1&#xff1a;ftfy修复文本用法2&#xff1a;修复文本中的特殊字符用法3&#xff1a;修复给定文本片段中的Unicode编码问题和其他字符问题总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手…