-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path34.py
More file actions
70 lines (65 loc) · 1.96 KB
/
34.py
File metadata and controls
70 lines (65 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
class Solution:
def searchRange(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
# method1 超时
# start = nums.index(target)
# end = start
# while end < len(nums) and nums[end] == target:
# end += 1
#
# return [start, end-1]
# method2 提交通过,但不是最好的方法
# if not nums:
# return [-1, -1]
# pleft, pright = 0, len(nums)-1
# while pleft <= pright:
# median = int((pleft+pright)/2)
# if nums[median]<target:
# pleft = median+1
# elif nums[median] > target:
# pright = median-1
# else:
# break;
# if pleft>pright:
# return [-1, -1]
# start, end, pleft, pright = median, median, median, median
# while pleft >= 0:
# if nums[pleft] == target:
# start = pleft
# pleft -= 1
# else:
# break;
# while pright <= len(nums)-1:
# if nums[pright] == target:
# end = pright
# pright += 1
# else:
# break;
# return [start, end]
# method3
def search(pleft, pright, target):
while pleft <= pright:
median = int((pleft+pright)/2)
if nums[median] >= target:
pright = median - 1
else:
pleft = median + 1
return pleft
if not nums:
return [-1, -1]
pleft = search(0, len(nums)-1, target)
pright = search(0, len(nums)-1, target+1)
if pleft <= (pright-1) < len(nums):
return [pleft, pright-1]
else:
return [-1, -1]
nums = [5, 7, 7, 8, 8, 10]
target = 8
nums1 = [1]
target1 = 0
test = Solution()
print(test.searchRange(nums1, target1))