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

丹阳网站建设报价郑州网站推广排名公司

丹阳网站建设报价,郑州网站推广排名公司,网站建设常用字体,山东省建设人才网站Python世界:力扣题704二分查找 任务背景思路分析代码实现测试套件本文小结 任务背景 问题来自力扣题目704:Binary Search,大意如下: Given an array of integers nums which is sorted in ascending order, and an integer target…

Python世界:力扣题704二分查找

    • 任务背景
    • 思路分析
    • 代码实现
    • 测试套件
    • 本文小结

任务背景


问题来自力扣题目704:Binary Search,大意如下:

Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.

You must write an algorithm with O(log n) runtime complexity.

翻译下,需求是:对有序数组进行查找指定数字,若有返回索引,若无返回-1.

思路分析


重温下二分写法,思路很简单,发现值大的下移上界,发现值小的上移下界,直到上下界重合。

要注意的是无target时,mid的偏移问题。

代码实现


class Solution(object):def search(self, nums, target):""":type nums: List[int]:type target: int:rtype: int"""# range: [low, high)low = 0high = len(nums)while (low < high):mid = low + (high - low) // 2if nums[mid] < target:low = mid + 1elif nums[mid] > target:high = midelse:return mid# not foundreturn -1# test
nums = [-1, 0, 3, 5, 9, 12]
target = 9# nums = [-1,0,3,5,9,12]
# target = 2sol = Solution()
res = sol.search(nums, target)
print(res)

测试套件


# 导入单元测试
import unittest# 编写测试套
class TestSol(unittest.TestCase):# 不在数组中def test_special1(self):nums = [-1, 0, 3, 5, 9, 12]target = 2ret = -1sol = Solution()self.assertEqual(sol.search(nums, target), ret)# 下边界def test_special2(self):nums = [-1, 0, 3, 5, 9, 12]target = -1ret = 0sol = Solution()self.assertEqual(sol.search(nums, target), ret)# 上边界def test_special3(self):nums = [-1, 0, 3, 5, 9, 12]target = 12ret = 5sol = Solution()self.assertEqual(sol.search(nums, target), ret)def test_common1(self):nums = [-1, 0, 3, 5, 9, 12]target = 5ret = 3sol = Solution()self.assertEqual(sol.search(nums, target), ret)def test_common2(self):nums = [-1, 0, 3, 5, 9, 12]target = 9ret = 4sol = Solution()self.assertEqual(sol.search(nums, target), ret)# 含测试套版本主调
if __name__ == '__main__':print('start!')unittest.main() # 启动单元测试print('done!')

本文小结


二分核心:索引偏移存乎一心。

可进一步思考若有重复值时,如何找到最小重复索引或最大重复索引。

http://www.yidumall.com/news/84822.html

相关文章:

  • 网站怎么做排名搜索引擎优化的作用是什么
  • 正能量网站大全进一步优化
  • 互联网网站开发服务合同范本今日国际新闻最新消息
  • 网络编程有哪些企业seo顾问
  • 临安区规划建设局网站河北seo网络优化师
  • 建网站要什么工做人员专门发广告的app
  • 有个专门做gif的网站百度知道首页登录
  • 代理平台软件seo培训学院官网
  • 做网站需要的电脑配置seo推广网络
  • 中国人做网站卖美国人seo综合查询系统
  • 网站建设的关键词河南自助建站seo公司
  • 佛山网站建设网络公司天琥设计培训学校官网
  • 北京网站建设手机app电子商务台湾新闻最新消息今天
  • 做做网站需要多少钱怎么自己制作网页
  • 长春企业网站模板建站免费网页空间到哪申请
  • 做网站时怎么取消鼠标悬停优化防疫政策
  • 网站建设企业 熊掌号近期时事新闻
  • 微信网站建设哪家好梅花seo 快速排名软件
  • 网站建设课程设计报告总结各类资源关键词
  • 会所网站建设推广平台哪儿有怎么做
  • 陕西秦地建设有限公司网站安卓排名优化
  • 小视频的网站怎么做的搜索引擎调词工具哪个好
  • 手机做印章网站百度网页推广怎么做
  • 做导航网站用什么cmsseo外包公司
  • 做商城的网站用什么框架好泉州百度开户
  • 北京商城网站建设费用网络营销的基本特征有哪七个
  • 聊城市东昌府区建设局网站网站搜索工具
  • 营销网站建设818gx在线营销推广
  • 东莞建设网站开发推广营销是什么
  • 承德市兼职网招聘信息seo刷网站