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

二分查找60-65

60. 搜索插入位置给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。class Solution(object): def searchInsert(self, nums, target): left0 rightlen(nums)-1 result-1 while(leftright): midleft(right-left)//2 if nums[mid]target: leftmid1 elif nums[mid]target: rightmid-1 else: resultmid rightmid-1 return left if result-1 else result61. 搜索二维矩阵给你一个满足下述两条属性的m x n整数矩阵每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数target如果target在矩阵中返回true否则返回false。class Solution(object): def searchMatrix(self, matrix, target): m,nlen(matrix),len(matrix[0]) i,j0,n-1 while im and j0: if matrix[i][j]target: i1 elif matrix[i][j]target: j-1 else: return True return False62. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组nums和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。class Solution(object): def searchRange(self, nums, target): left0 rightlen(nums)-1 result_left-1 result_right-1 while(leftright): midleft(right-left)//2 if nums[mid]target: rightmid-1 elif nums[mid]target: leftmid1 else: result_leftmid rightmid-1 left0 rightlen(nums)-1 while(leftright): midleft(right-left)//2 if nums[mid]target: rightmid-1 elif nums[mid]target: leftmid1 else: result_rightmid leftmid1 return [result_left,result_right]63. 搜索旋转排序数组整数数组nums按升序排列数组中的值互不相同。在传递给函数之前nums在预先未知的某个下标k0 k nums.length上进行了向左旋转使数组变为[nums[k], nums[k1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]下标从 0 开始计数。例如[0,1,2,4,5,6,7]下标3上向左旋转后可能变为[4,5,6,7,0,1,2]。给你旋转后的数组nums和一个整数target如果nums中存在这个目标值target则返回它的下标否则返回-1。你必须设计一个时间复杂度为O(log n)的算法解决此问题。class Solution(object): def search(self, nums, target): if not nums: return -1 left, right 0, len(nums) - 1 while left right: mid (left right) // 2 if nums[mid] target: return mid if nums[left] nums[mid]: if nums[left] target nums[mid]: right mid - 1 else: left mid 1 else: if nums[mid] target nums[right]: left mid 1 else: right mid - 1 return -164. 寻找旋转排序数组中的最小值已知一个长度为n的数组预先按照升序排列经由1到n次旋转后得到输入数组。例如原数组nums [0,1,2,4,5,6,7]在变化后可能得到若旋转4次则可以得到[4,5,6,7,0,1,2]若旋转7次则可以得到[0,1,2,4,5,6,7]注意数组[a[0], a[1], a[2], ..., a[n-1]]旋转一次的结果为数组[a[n-1], a[0], a[1], a[2], ..., a[n-2]]。给你一个元素值互不相同的数组nums它原来是一个升序排列的数组并按上述情形进行了多次旋转。请你找出并返回数组中的最小元素。你必须设计一个时间复杂度为O(log n)的算法解决此问题。class Solution(object): def findMin(self, nums): left,right0,len(nums)-1 mfloat(inf) while leftright: midleft(right-left)//2 if nums[left]nums[mid]: if nums[left]m: mnums[left] leftmid1 else: if nums[mid]m: mnums[mid] rightmid-1 return m65. 寻找两个正序数组的中位数给定两个大小分别为m和n的正序从小到大数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log (mn))。class Solution(object): def getE(self,nums1,nums2,k): if not nums1: return nums2[k-1] if not nums2: return nums1[k-1] if k1: return min(nums1[0],nums2[0]) imin(len(nums1),k//2)-1 jmin(len(nums2),k//2)-1 if nums1[i]nums2[j]: return self.getE(nums1[i1:],nums2,k-i-1) else: return self.getE(nums1,nums2[j1:],k-j-1) def findMedianSortedArrays(self, nums1, nums2): klen(nums1)len(nums2) if k%20: return (self.getE(nums1,nums2,k//2)self.getE(nums1,nums2,k//21))/2.0 else: return self.getE(nums1,nums2,k//21)
http://www.gsyq.cn/news/1299175.html

相关文章:

  • 从零构建生成式AI应用:四层学习框架与RAG实战指南
  • 基于深度学习的智能职业匹配系统设计与实现
  • 基于有限变形理论的FCC单晶与多晶塑性本构模型研究
  • 刘伟:AI“炼化”的赛博分身,复刻不了激情与创造
  • 从‘相似’到‘原型’:深入对比Siamese Network和Prototypical Network,教你为电影分类任务选对模型
  • 基于Backstage构建企业级AI开发平台:架构设计与工程实践
  • AI智能体工具搜索系统:从MCP协议到语义检索的工程实践
  • TTS 引擎的 MOS 评分到底有多高?顶伯实测
  • 香橙派平板从零启动指南:配件选型、系统烧录与首次启动全解析
  • 光敏互动徽章制作:融合Arduino、NeoPixel与导电缝纫的智能穿戴实践
  • 绝区零自动化解决方案:如何高效管理日常任务与战斗流程
  • 如何为Mac鼠标配置高级手势和滚动优化
  • 3步解锁GTNH中文体验:告别英文界面,轻松畅玩格雷科技新视野
  • 从“裸养“到“安全养虾“:360安全龙虾深度体验报告
  • LLVM编译器架构解析:从模块化设计到实战应用
  • CFETR重载机械臂精确运动控制验证【附仿真】
  • 微软开源Trace:高性能.NET分布式追踪库原理与实战
  • AI Agent设计模式解析:Router与Supervisor模式构建智能体系统
  • 基于工厂模式构建SMILES分子处理流水线:从RDKit到标准化实践
  • ElevenLabs企业级套餐真相(含未公开API配额分级表):技术采购负责人必须核验的7项隐性成本
  • AI Agent 提示注入防御全解析:Unicode 清洗、MCP 安全、Claude Code 权限治理与纵深防御
  • HS2-HF Patch:3步安装HoneySelect2终极增强补丁完整指南
  • 别再手动传AAR了!用JFrog Artifactory OSS 7.49.8搭建Android私有Maven仓库,一个虚拟仓库搞定所有依赖
  • CompressO:免费开源的终极跨平台视频图片压缩工具
  • 深入解读DFT DRC中的时钟控制难题:门控、分频与Lockup Latch实战解析
  • 别再踩坑了!HBuilderX+微信开发者工具搞定小程序模糊定位(附完整manifest.json与page.json配置)
  • OpenCV图像处理:用subtract()函数做背景差分,轻松实现运动目标检测(附Python/C++代码)
  • Pyfa舰船配置模拟器:如何在EVE Online中零成本打造完美战舰?
  • 影刀RPA跨境店群运营架构:多账号环境隔离与 Python 高并发调度系统实战
  • 影刀RPA跨境店群运营架构:基于Python的高并发环境隔离与自动化调度系统设计实战