当前位置: 首页 > 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

相关文章:

  • 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