浙江百度代理公司seo站长平台

diannao/2026/1/18 17:31:01/文章来源:
浙江百度代理公司,seo站长平台,长沙互联网大厂,万网 做网站文章目录 情景一 : 二分查找情景二 : 找出一个 num 的最左侧的位置情景三 : 找出一个 num 的最右侧的位置leetcode 162 :寻找峰值leetcode 69 : x 的平方根 首先来简介一下二分搜索算法,二分搜索是一种每次砍半的算法,最经典的案例当然是我们的二分查找算法,但是大部… 文章目录 情景一 : 二分查找情景二 : 找出一个 num 的最左侧的位置情景三 : 找出一个 num 的最右侧的位置leetcode 162 :寻找峰值leetcode 69 : x 的平方根 首先来简介一下二分搜索算法,二分搜索是一种每次砍半的算法,最经典的案例当然是我们的二分查找算法,但是大部分人所认知的二分搜索都是必须要满足这个 数组有序,才可以进行,其实不然,二分的本质逻辑是建立在砍半,而砍半的本质就是你知道那一半一定没有,而另一半不一定有的前提下,只要满足了这一前提条件,那么你就可以尽可以进行二分…这个算法的时间复杂度是O(logN) 我们这个算法的系列将会长期更新,在遇见好题了之后就会加进来进行整理 情景一 : 二分查找 这个是二分最经典的情景,也就是在一个数组中进行每次砍半的查找元素 代码实现如下 public static int myBinarySearch(int[] nums,int key){if(nums null || nums.length 0){System.out.println(无法进行搜索);return -1;}int left 0;int right nums.length - 1;int mid;while(left right){//请注意这里我们对于我们这个平均值的处理情况mid left ((right - left)1);if(nums[mid] key){right mid - 1;}else if(nums[mid] key){left mid 1;}else{return mid;}}return -1;} 注意一下我们这里的求其平均值的操作,是利用位运算,其一是防止其溢出,其二是加快运算的速度,因为位运算的速度要远大于除法运算… 情景二 : 找出一个 num 的最左侧的位置 这个其实也是二分的逻辑,我们定义一个标记物 ans 初始化置为-1,当我们的mid满足条件的时候,我们就将我们的ans置为 mid ,然后继续二分,当不满足条件的时候,我们就不进行操作,继续二分,然后最后返回我们的 ans 标记物… 代码实现如下 : /*** 情景二 : 找到 num 的最左侧的位置* 这个基本的逻辑跟二分搜索法其实是一致的,但是也是有一定的差别,比如这个必须要搜索彻底才可以* 当每次满足条件的时候,就进行 ans 的更新...直到left right;** 可能你有疑问:为什么我们不进行 num 的最左侧位置的查找 ...* 因为这个问题是没有意义的..因为只需要判断 nums[0] 跟 key的关系* param nums : 待搜索的数组* param key : 待定的查找元素* return*/public static int findNumMaxLeft(int[] nums,int key){if(nums null || nums.length 0){System.out.println(无法进行搜索);return -1;}int left 0;int right nums.length - 1;int mid;int ans -1;while(left right){mid left ((right - left) 1);if(nums[mid] key){ans mid;right mid - 1;}else if(nums[mid] key){left mid 1;}}return ans;}情景三 : 找出一个 num 的最右侧的位置 这个其实跟情景二是对称的,原理是一致的,当满足条件的时候记录下来继续进行二分,当不满足条件的时候不进行记录然后继续进行二分,到二分到不能再次进行二分的情况之后,就返回我们的标记ans值… 代码实现如下: public static int findNumMinRight(int[] nums,int key){if(nums null || nums.length 0){System.out.println(无法进行搜索);return -1;}int left 0;int right nums.length - 1;int mid;int ans -1;while(left right){mid left ((right - left) 1);if(nums[mid] key){left mid 1;ans mid;}else if(nums[mid] key){right mid - 1;}}return ans;}leetcode 162 :寻找峰值 首先我们来分析一下这个题干,这个数组中相邻的两个元素都是不相等的,然后让你返回其中的一个峰值(任意一个就可以),那这道题为什么可以进行二分呢…,我们来看体重的假设提示,我们假设 nums[-1] 和 nums[n] 都是 负无穷 首先我们判断一下特殊的情况,假设我们的 第一个元素大于第二个元素,所以此时第一个元素就是局部的峰值(其实这里有点类似函数极值点的概念),对应的如果最后一个元素要大于倒数第二个元素,那么最后一个元素就是峰值 特殊情况的制约if(nums null || nums.length 0){System.out.println(这个数组不可能存在峰值);return -1;}//下面都是一些特殊情况的判断...(端点处的极值问题)if(nums.length 1){return 0;}if(nums[0] nums[1]){return 0;}if(nums[nums.length-1] nums[nums.length - 2]){return nums.length - 1;}下面我们进行一般情况的分析 我们现在不满足特殊条件,所以我们数组的走向是这样的,那么因为我的开头处是上升,终点位置是下降,所以中间的某个位置一定存在至少一个极值点(有点类似中值定理) 所以我们可以进行二分 判断nums[mid] 和 nums[mid-1] 与nums[mid1] 之间的关系… 而中值位置情况的只有以下四种 其中 1 2 4 都不是我们所需要的,所以要继续进行二分搜索 所以我们可以写出如下的代码 int left 1;int right nums.length - 2;int mid;/*** 注意:* 这里的控制条件其实非常合理,在中点处一共只有四种情况,而这个循环的控制体系可以控制其中的三种无峰值的情况...*/while(left right){mid left ((right - left) 1);if(nums[mid] nums[mid - 1]){right mid - 1;}else if(nums[mid] nums [mid 1]){left mid 1;}else{return mid;}}return -1;下面是我们的完整代码 public static int findPeakNumber(int[] nums){if(nums null || nums.length 0){System.out.println(这个数组不可能存在峰值);return -1;}//下面都是一些特殊情况的判断...(端点处的极值问题)if(nums.length 1){return 0;}if(nums[0] nums[1]){return 0;}if(nums[nums.length-1] nums[nums.length - 2]){return nums.length - 1;}//下面是普通的一个情况//其实有点类似数学的拉格朗日中值定理int left 1;int right nums.length - 2;int mid;/*** 注意:* 这里的控制条件其实非常合理,在中点处一共只有四种情况,而这个循环的控制体系可以控制其中的三种无峰值的情况...*/while(left right){mid left ((right - left) 1);if(nums[mid] nums[mid - 1]){right mid - 1;}else if(nums[mid] nums [mid 1]){left mid 1;}else{return mid;}}return -1;} leetcode 69 : x 的平方根 这就是一个典型的可以进行二分的题 这个题的核心逻辑跟我们第三个题 : 找出 num 的最右侧位置是一致的 值得一提的是,我们这个题要控制我们的算数范围,否则就会出现溢出的问题,下面就是我们的代码解析…没啥可说的了 /*** 找出一个数的算术平方根向下取证的那个数然后返回* param x : 待定的开方数* return*/public static int mySqrt(int x){if(x 0){return 0;}int left 1;int right x / 2;int mid;int ans -1;while(left right){mid left ((right - left)1);if(mid x/mid){ans mid;left mid 1;}else if(mid x/mid){right mid - 1;}}return ans;}唯一要注意的一点就是,这里我们不可以用mid*mid x,要改成除法,用mid x / mid,否则这个题就会数值溢出导致出错…

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

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

相关文章

百度网站打开百度关键词工具

列表的遍历: a [10,20,30,40] for obj in a: #obj 是临时变量名称,随意起名print(obj) 执行结果: 复制列表所有的元素到新列表对象: list1 [30,40,50] list2 list1 #只是将list2也指向了列表对象。也就是说list…

杭州公司做网站青海微信网站建设

OSS网页上传和断点续传主要根据BrowserJS-SDK和相关文档整理而得,快速构建OSS上传应用 一、Bucket设置 浏览器中直接访问OSS需要开通Bucket的CORS设置 将allowed origins设置成 *将allowed methods设置成 PUT, GET, POST, DELETE, HEAD将allowed headers设置成 *将e…

官渡网站设计制作浙江省城乡建设住房厅网

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 速递|木头姐 ARK 宣布已投资 OpenAI!还将 Anthropic 及 Figure1 等 AI 独角兽一网打尽摘要: ARK已通过其风…

可以打开所有网站的浏览器wordpress企业网站定制教程 一

1.简介 Java NIO是从Java 1.4引入的库。 自从Java NIO推出以来,它提供了另一种方法来处理I / O和网络事务。 它被认为是Java网络和Java IO库的替代方法。 开发Java NIO的目的是使输入和输出的事务异步和非阻塞。 阻塞和非阻塞IO的概念将在后面的部分中介绍。 目录…

上海外贸网站制作网络服务商在哪咨询

目录 而不使用enabled属性 现在,使用enabled属性 我们可以使用enabled属性来忽略类中的所有情况吗? Test注解有很多属性,enabled也是其中之一。在这篇文章中,我们将详细讨论enabled属性。 enabled属性有什么作用?当…

办网站流程天河网站建设方案

1.TEXTAREA自适应文字行数的多少 2.脚本永不出错<script LANGUAGE"javascript"></script>3.ENTER键可以让光标移到下一个输入框4.预定秒数内自动转到指定网址5.怎么改变滚动条的颜色&#xff0c;只有ie5.5版本以上才能支持。 这是使用CSS语言&#xff0c…

网站怎么更新内容wordpress编辑器那个好

2024年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中&#xff0c;敬请期待… 武汉唯众智创科技有限公司 2024 年 3 月 联系人&#xff1a;辜渝傧13037102709 题号&#xff1a;试题05 ZZ052-大数据应用与服务赛项试题 05 模块一:平台搭建与运维 (一…

英文网站策划杭州网站建设浙江

1、从NXP的共享账号下载资料 共享账号需要找对接的NXP人员拿到&#xff0c;他会把资料分享到这个账号&#xff0c;在这个账号里面可以下载 进入nxp官网&#xff0c;登录后点击my nxp&#xff0c;选择Software Licensing and Support 进入后接着选择View accounts 进入后选择…

旅游网站的设计私自建立网站网站判决书

此文章用于详细介绍malloc_consolidate。 众所周知&#xff0c;fastbin一般是不能合并&#xff0c;但在malloc_consolidate中是个例外。 1.触发机制 首先构造这样的堆块结构 一个0x40的堆块在fastbin中&#xff0c;一个0x110的堆块在unbin中 随后我们尝试分配一个0x300的堆…

上海智能网站建设公司怎么进wordpress后台

题意&#xff1a;给 nnn 个长度为 mmm 的 01 串&#xff0c;一个 01 串初始为空&#xff0c;不断随机一个字符加在后面&#xff0c;当出现给定的 nnn 个串中的一个时停止。分别求在 nnn 个串处停止的概率。 考场思路历程&#xff1a; 显然建出 AC 自动机&#xff08;flag&…

外贸怎么用网站开发新客户京东企业集团网站建设方案

马上过年了&#xff0c;最近工作不太忙&#xff0c;再加上本人最近比较懒&#xff0c;毫无斗志&#xff0c;不愿学习新东西&#xff0c;或许是要过年的缘故(感觉像是在找接口)。 就把前一段时间做过的vue项目&#xff0c;进行一次完整的总结。 这次算是详细总结&#xff0c;会从…

汽车业务网站开发公司本溪seo优化

注&#xff1a;Pagerduty作为报警系统&#xff0c;出镜率很高。 虽然收费&#xff0c;但对于企业来说很便宜。 一个月几十美金 不太支持中文&#xff0c;主要是语音方面。 Prometheus 查询语句 &#xff0c; 基于数学运算模式的监控查询 我们计算一下一天多少秒 1 * 24 * 60 *…

网站建设 软件服务网络营销优化推广公司

在MacOS系统上&#xff0c;保持Pip和Python版本的最新状态对于顺利进行Python开发至关重要。通过升级Pip和Python&#xff0c;你可以享受到最新的功能、修复的bug以及提升的开发效率。本文将为你提供在MacOS上升级Pip和Python的详细指南&#xff0c;助你打造更强大的开发环境。…

建材城电商网站建设中国工商登记网

微信小程序配置上传多个u-upload上传 使用的是uView框架 微信小程序配置上传多个u-upload上传图片 场景需求&#xff1a;根据PC端配置项追加图片配置 小程序根据配置的图片数量&#xff0c;图片名称&#xff0c;进行上传图片 难度在于 我们不知道用户会追加多少个图片配置字段 …

旅游网站建设的概念聊天软件开发厂家有哪些

前言在公司的日常工作当中或者个人的开源项目&#xff0c;将代码提交到代码库时。都会遇到下面这样的对话框&#xff0c;通常都会随便写点内容在里面。当遇到问题需要回溯的时候就成了给自己造成的麻烦&#xff0c;因为无法通过commit message来非常直观的看到这一次提交了什么…

h5建站免费在线网站建设课程

1 问题 Android加载图片需要圆角化,有什么简单粗暴的方法吗?当然有,用我们的神器glide 2 解决办法 1)简单办法 ImageView imageView = (ImageView)helper.getView(R.id.keepHomeAppImageview);Glide.with(mContext).asBitmap().load(iconUrl) // .ov…

做网站前期需要什么网站建设方案ppt 枫子科技

一、Yeoman 简介 通常在开发新项目时我们都需要配置工程环境&#xff0c;开发目录&#xff0c;需要下载一些库、框架文件&#xff08;如 jQuery、Backbone 等&#xff09;&#xff0c;配置编译环境&#xff08;Less、Sass、Coffeescript等&#xff09;&#xff0c;甚至还要配置…

南京seo建站南通市规划建设局网站

最近在线上环境遇到了一次SQL慢查询引发的数据库故障&#xff0c;影响线上业务。经过排查后&#xff0c;确定原因是&#xff1a;SQL在执行时&#xff0c;MySQL优化器选择了错误的索引(不应该说是“错误”&#xff0c;而是选择了实际执行耗时更长的索引)。排查过程中&#xff0c…

深圳贷款网站建设免费软件app下载

一、sqa计划 本计划是对“生活在长大”项目的流程规范和约定&#xff0c;本次计划包括质量保证、质量控制、数据收集和统计报告四部分。 质量保证&#xff1a; 保证项目的完整和运行&#xff0c;没有重大BUG。 计划进度 任务      时间        结果       …

网站网站营销特点电商网站详细设计

TikTok 喘息 继上月通过强制剥离 TikTok 法案后&#xff0c;美国众议院在当地时间 20 日下午以 360 票赞成 58 票反对通过了新的法案&#xff1a;剥离 TikTok 的期限由生效后 165 天调整至 270 天之内&#xff0c;即今年 11 月的美国总统大选后。 之前我们讲过&#xff0c;TikT…