当前位置: 首页 > news >正文

苏州网站建设推广服务/怎么推广游戏叫别人玩

苏州网站建设推广服务,怎么推广游戏叫别人玩,wordpress浏览时间插件下载,学校网站页面设计二分查找题解 一、碎碎念 从本周开始,重新更新刷题记录了哈。 基于费曼学习法的原理,最好的输入是输出,所以与大家分享。 鉴于目前这个糟糕的市场环境,还是要练好自己的基本技术,万一那天就被迫 N 1了,你…

二分查找题解

一、碎碎念

从本周开始,重新更新刷题记录了哈。
基于费曼学习法的原理,最好的输入是输出,所以与大家分享。
鉴于目前这个糟糕的市场环境,还是要练好自己的基本技术,万一那天就被迫 N + 1了,你说是吧。

Leetcode 两年没见,出了个分块刷题的区域。甚好,就照着这个边刷边给各位分享吧。

二、正文

1. 简介

二分算法是一个比较常用的基础算法。
本期分享的是两道简单题,重点在于解析二分算法的原理和注意点,而不在于难度。

2.算法原理

二分算法的原理很简单,顾名思义。
是将一组有序数据从中间二分,循环比较中值,根据中值和目标值的比较来决定最右边左移还是最左边右移后进入下一个循环,或者满足退出条件后退出循环。

好,那么开始提炼关键点。
首先,得是有序数据,只有有序,中值的比较才有意义。不然中值的左右两边都比中值大或者小。鬼知道移动最左边还是最右边。

二,要根据中值和目标值的比较来确定是否进入下一个循环或者退出。也就是确定退出条件。这个就要看清楚题干中的条件了。诸如升序降序,和目标值相等还是小于某个值的最下值

最后,还有几个注意点在代码分析时讲解。

3.代码实操

题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

func search(nums []int, target int) int {l, r, m, num := 0, len(nums)-1, 0, 0for l <= r {m = (r - l)/2 + lnum = nums[m]if num == target {return m} else if num > target {r = m - 1} else  {l = m + 1}}return -1
}

代码不复杂,仔细研究下,凭借各位的聪明才智肯定能读懂。但有几个隐藏的注意点需要关注。

首先,循环遍历时,最左边要小于等于右边。这个等于很关键,因为二分分到非整值时是自动取小的数的。有可能遍历到最后就俩值。先遍历到了小的,但目标是大值,等你右移的话,假如没等于号,那你就退出循环了,没找到目标值报错咯。

然后,要注意中值的取法。应该是最右边减最左边的一半加上最左边。因为起点不是 0,而是最左边。你要找的是最左边与最右边的中值。

最后,移动边界时。不必取中值本身。这个倒是取决于题干的,本题不取是因为找等于目标值的对象。中值没取到就可以被过滤,但其他情况可能就不一样了,具体情况具体分析。

下面再浅浅分析一个变种。

【Leetcode 278】 第一个错误版本
题目 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。

假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。

你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。

/** * Forward declaration of isBadVersion API.* @param   version   your guess about first bad version* @return 	 	      true if current version is bad *			          false if current version is good* func isBadVersion(version int) bool;*/func firstBadVersion(n int) int {l, r, m, tar := 1, n, 0, 0for l <= r {m = (r-l)/2 + lif isBadVersion(m) {r = m - 1if tar > m || tar == 0 {tar = m} else {break}} else {l = m + 1}} return tar
}

本题变在并不是匹配上接口,要做的是找到判定为 false 的最小值。
你就需要用一个值来暂存这个返回值。然后不断二分,直到找不到比他更小的值为止。
所以,你的退出条件不是匹配到 true 就退出,而是找不到比他更小的 true 再退出。等于或者大于都退出。

end

http://www.jmfq.cn/news/5360887.html

相关文章:

  • 临沂网站设计建设/海外广告优化师
  • 第三方商城网站建设/苹果自研搜索引擎或为替代谷歌
  • 网站建设的栏目策划/深圳网络营销推广方案
  • 京东网站建设项目需求分析报告/北京seo管理
  • 济南网站建设外包公司/58百度搜索引擎
  • 餐饮网站建设方案书/seo是什么缩写
  • 温岭网站建设联系电话/优化设计四年级上册语文答案
  • 网站YYQQ建设/网站有哪些平台
  • 烟台网站建设公司报价/网站之家
  • 网站建设论文答辩题目/流量点击推广平台
  • 电子商务网站建设步/seo查询软件
  • 贵安新区微信网站建设/网站seo哪家公司好
  • 网站建设服务合同 印花税/郑州网站公司哪家好
  • 南水北调中线干线工程建设管理局网站/哪里做网络推广好
  • 济南商城网站建设/长春网站优化指导
  • 推进政府网站建设的措施/厦门网站建设公司
  • 邯郸住房城乡建设厅网站/中国科技新闻网
  • 电子商务网站建设规划书/聊城今日头条最新
  • 91大神网站建设/参考网是合法网站吗?
  • 深圳市建设厅官方网站/注册网站流程和费用
  • 密云重庆网站建设/武汉网站排名推广
  • 南宁市建设局网站/app排名优化公司
  • 广州口碑好的网站建设/百度推广营销
  • 鞍山建设集团网站/网络口碑营销案例分析
  • 县政府网站建设工作任务/推广获客
  • 网站建设网站优化相关资讯文章/江苏网页定制
  • 政府网站内容建设管理规范/成人职业技能培训有哪些项目
  • 宁夏建设工程招标投标信息管理中心网站/百度公司招聘
  • 汝阳县住房与城乡建设局建局网站/电商网站如何避免客户信息泄露
  • 企业网站建设上机考试/百度2022新版下载