解决之路= =
周日,写个中等难度的。
题目描述
测试案例(部分)
第一次
序列是有序的,然后找指定的元素,肯定是扎堆的,所以先找到元素第一个位置,然后通过线性探测逐步+1
的往后找,什么时候不相等了,就停止探测,直接输出。
class Solution(object):
def searchRange(self, nums, target):
if target not in nums:
return [-1, -1]
else:
left = nums.index(target)
right = left
for i in range(len(nums) - left - 1):
if nums[right + 1] == nums[right]:
right += 1
return [left, right]
测试正确,提交成功。
解法的效率还挺快,不过因为不确定这个index的时间复杂度,不知道我这个解法时间复杂度是多少。
但,我试了评论区他们用二分法写的,运行了一下,花费时间比自己写的要慢,所以我这个代码也算符合题目要求了。
闲谈
为了试一下logn的方法,评论区都在说用二分查找。
因为符合二分查找的条件——有序。二分查找的时间复杂度倒真是O(log2n),然后再确认是否是第一个位置和最后一个位置。