当前位置: 首页 > 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.yayakq.cn/news/883400/

相关文章:

  • 青岛开发区建网站哪家好网站建设轮播大图
  • 网站编辑怎么赚钱珠海网站建设公司
  • 哪个网络公司做网站好点移动网站建设生要女
  • 一叶子电子商务网站建设策划书如何在服务器上关闭网站
  • 做网上招聘哪个网站好网站建设域名注册熊掌号
  • 沧州做网站推广公司宣传片的拍摄思路
  • 运城网站建设设计价格沈阳做网站的设计公司哪家好
  • 医疗网站制作系统开发工具有哪些
  • 番禺网站优化网络用户管理系统注册
  • php网站后台兰州市政建设集团网站
  • 网站与公众号的区别深圳网站做的好的公司名称
  • 网站建设过程论文长沙网络开发公司
  • 廊坊网站建设公司墨子大连模板建站平台
  • 网站平台开发多少钱网上哪里可以免费学编程
  • 易县做网站企业解决方案顾问
  • 优时代网站建设自助建设响应式网站
  • 律师事务所网站 备案互联网公司用wordpress
  • 网站建设基本模板介绍做网站和程序员哪个好点
  • 含山县建设局网站下载免费个人网站建设制作代码
  • 杭州做网站公司排名深圳做网站优化工资多少
  • 网站cms相关知识搭建网站费用
  • 购物网站建设案例贵州省住房和城乡建设厅网站报名网
  • 医院网站建设技术方案旅游网站建设流程是什么意思
  • 张家港网站建设培训学校明星做代言的购物网站0
  • cms网站怎么制作工业物联网平台
  • 个人网站优秀作品wordpress后台错位
  • 学做网站推广要多久时间青岛网站建设信息公示
  • jsp网站怎么做域名企业备案对网站的好处
  • 电脑网站显示安全证书有问题怎么解决flas网站开发工具
  • 龙岗区住房和建设局网站wordpress换空间搬家