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

540. 有序数组中的单一元素

力扣刷题记录

二分

540. 有序数组中的单一元素

思路

这题的主要思路 直接遍历 依次比较相邻两个是否相同 如果不相同直接返回

但是这样无法达到要求的O(log n)
要达到这个时间复杂度只能二分查找了

mid 偶数
比较 mid mid + 1
相等 low = mid + 1
不等 high = mid

mid 奇数
比较 mid mid - 1
相等 low = mid + 1
不等 high = mid

最后 high == low 此时找到的值

代码
class Solution:def singleNonDuplicate(self, nums: List[int]) -> int:# O(N)# i = 0# while i < len(nums):#     if i < len(nums) - 1 and nums[i] == nums[i+1]:#         i = i + 2#         continue#     else:#         return nums[i]# return 0# mid 偶数  比较 mid     mid + 1# 相等  low = mid + 1# 不等  high = mid l , r = 0, len(nums) - 1while l < r :mid = (l + r) // 2if nums[mid] == nums[mid ^ 1]:l = mid + 1else:r = midreturn nums[l]

时间复杂度:O(log n)
空间复杂度:O(1)


http://www.mrgr.cn/news/69616.html

相关文章:

  • 【MYSQL】主从复制机制(图解)
  • Linux中.NET读取excel组件,不会出现The type initializer for ‘Gdip‘ threw an exception异常
  • 安科瑞工业绝缘监测装置:保障煤矿井下6kV供电系统安全运行的关键应用——安科瑞 丁佳雯
  • 学习threejs,使用第一视角控制器FirstPersonControls控制相机
  • 阿里云通义大模型团队开源Qwen2.5-Coder:AI编程新纪元
  • npm list @types/node 命令用于列出当前项目中 @types/node 包及其依赖关系
  • SimpleMemory 博客园主题美化
  • 如何自己实现事件的订阅和发布呢?
  • 基于SpringBoot+Vue音乐播放和推荐系统【提供源码+答辩PPT+参考文档+项目部署】
  • PostgreSQL 用户登录失败账号锁定
  • 基于SpringBoot的“生鲜交易系统”的设计与实现(源码+数据库+文档+PPT)
  • numpy np.logical_not函数介绍
  • LLMs在供应链投毒检测中的应用
  • Python中的动态属性管理:使用`__getattr__`和`__setattr__`实现灵活的数据访问
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于数据-模型混合驱动方法的多类型移动应急资源优化调度策略 》
  • 一文带你看懂Java多线程并发,深度剖析AQS源码
  • 想让水凝胶像智能生物一样行动?光和电怎样赋予其自主 “超能力”?
  • 基于PyQt Python的深度学习图像处理界面开发(一)
  • 【含开题报告+文档+PPT+源码】基于Springboot和vue的电影售票系统
  • 政务培训|LLM大模型在政府/公共卫生系统的应用
  • stm32以太网接口:MII和RMII
  • 前端 性能优化 (图片与样式篇)
  • 【GESP】C++一级真题练习(202312)luogu-B3921,小杨的考试
  • 用 Python 进行建模优化:Pyomo
  • KALI-sqlmap更新
  • 【51单片机】I2C总线详解 + AT24C02