当前位置:网站首页>【二分搜索-中等】540. 有序数组中的单一元素
【二分搜索-中等】540. 有序数组中的单一元素
2022-04-21 15:08:00 【菜菜2022】
题目
注意!题目要求:你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。
示例 1:
输入: nums = [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:
输入: nums = [3,3,7,7,10,11,11]
输出: 10
提示:
1 <= nums.length <= 105
0 <= nums[i] <= 105
前面这两种方法虽然可以得到正确的结果,但是都不满足题目所说的时间复杂度,第三种方法满足
【代码】
执行用时:68 ms, 在所有 Python3 提交中击败了5.60% 的用户
内存消耗:21.3 MB, 在所有 Python3 提交中击败了31.37% 的用户
通过测试用例:15 / 15
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
for idx,item in enumerate(nums):
if (idx^1)>=len(nums) or item!=nums[idx^1] :
return item
return -1
【方法2】
执行用时:56 ms, 在所有 Python3 提交中击败了9.91% 的用户
内存消耗:21.1 MB, 在所有 Python3 提交中击败了92.84% 的用户
通过测试用例:15 / 15
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
idx=0
n=len(nums)
while idx<n:
if (idx^1)>=n or nums[idx]!=nums[idx^1] :
return nums[idx]
idx+=2
return -1
【方法3】二分法
执行用时:44 ms, 在所有 Python3 提交中击败了53.13% 的用户
内存消耗:21.2 MB, 在所有 Python3 提交中击败了63.68% 的用户
通过测试用例:15 / 15
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
left,right=0,len(nums)-1
while left<right:
mid=left+(right-left)//2
if nums[mid^1]==nums[mid]:
left=mid+1
else:
right=mid
return nums[left]
版权声明
本文为[菜菜2022]所创,转载请带上原文链接,感谢
https://blog.csdn.net/kz_java/article/details/124290244
边栏推荐
猜你喜欢

二叉树的堂兄弟节点-c语言

京东云重磅发布云电脑,面向未来打造无界办公体验

Shang Silicon Valley smart campus - 6. Realization of administrator function

.Net C# Newtonsoft. JSON serializersettings configuration

想请问一下如何从数据库中找到软件注册码

亚马逊测评自养号,卖家想要获得review应该怎么做?

Dabdetr paper interpretation + core source code interpretation

MySQL下载和安装教程

阿里超大规模 Flink 集群运维体系介绍

怎么去约束代码的统一性
随机推荐
.Net C# Newtonsoft. JSON serializersettings configuration
你真的会用`timescale吗?
Practical application of MySQL database (I)
数字孪生坦克作战,科技推动战场信息数据化
Spark SQL底层执行流程详解
干货 | 测试人职场晋升“潜规则”:15 年经验资深测试经理的职场忠告
【云驻共创】华为云数据库-基础知识
Insecte dans Hill
Shang Silicon Valley smart campus - 6. Realization of administrator function
软件测试(三)p51-p104 软件测试用例方法、缺陷
Storage system and memory
VMware Horizon 8 2111 部署系列(十三)创建应用程序池
js 百度地图定位
Spark/Scala - 读取 RcFile && OrcFile
Deploy the big pit of edgemesh on kubesphere
Mysql 执行流程
MySQL multi condition query
Special test 04 · differential calculus of multivariate functions [Li Yanfang's whole class]
数据库基础知识详解五:MySQL中的索引和其两种引擎、主从复制以及关系型/非关系型数据库
Dry goods | application packaging or test team?