title: leetcode no.34
categories:
tags:
給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。
如果陣列中不存在目標值 target,返回 [-1, -1]。
高階:你可以設計並實現時間複雜度為 o(log n) 的演算法解決此問題嗎?
示例 1:
輸入:nums = [5,7,7,8,8,10], target = 8
輸出:[3,4]
示例 2:
輸入:nums = [5,7,7,8,8,10], target = 6
輸出:[-1,-1]
示例 3:
輸入:nums = , target = 0
輸出:[-1,-1]
0 <= nums.length <= 105
-109 <= nums[i] <= 109
nums 是乙個非遞減陣列
-109 <= target <= 109
class solution(object):
# 二分查詢邊界座標 如果沒有則返回[-1,-1]
# 查詢左側邊界
def leftbinarysearch(self,nums,l,r,target):
if nums[l] == target:
if l == 0:
return 0
elif nums[l-1] != target:
return l
elif nums[l-1] == target:
return self.leftbinarysearch(nums, l-1, r, target)
elif r > l:
mid = int((r+l)/2)
if nums[mid] > target:
return self.leftbinarysearch(nums, l, mid-1,target)
elif nums[mid] < target:
return self.leftbinarysearch(nums, mid+1, r, target)
elif nums[mid] == target:
return self.leftbinarysearch(nums, mid, r, target)
else:
return -1
# 查詢右側邊界
def rightbinarysearch(self,nums,l,r,target):
if nums[r] == target:
if r == len(nums)-1:
return len(nums)-1
elif nums[r + 1] != target:
return r
elif nums[r + 1] == target:
return self.rightbinarysearch(nums, l, r+1, target)
elif r > l:
mid = int((r + l) / 2)
if nums[mid] > target:
return self.rightbinarysearch(nums, l, mid - 1, target)
elif nums[mid] < target:
return self.rightbinarysearch(nums, mid + 1, r, target)
elif nums[mid] == target:
return self.rightbinarysearch(nums, l, mid, target)
else:
return -1
def searchrange(self, nums, target):
""":type nums: list[int]
:type target: int
:rtype: list[int]
核心思想:
由於給定的陣列是乙個非遞減陣列,因ic同樣可以使用33的中的二分法來查詢到target的左右邊界index
例子:[5,7,7,8,8,8,10], target = 8
左右邊界點分別為3、5
"""if len(nums) == 0:
return [-1,-1]
a = self.leftbinarysearch(nums,0,len(nums)-1,target)
b = self.rightbinarysearch(nums,0,len(nums)-1,target)
boundarylist =
return boundarylist
if __name__ == '__main__':
s = solution()
print(s.searchrange([5,7,7,8,8,10],8))
NeHe OpenGL第三十四課 地形
nehe opengl第三十四課 地形 從高度圖生成地形 這一課將教會你如何從乙個2d的灰度圖建立地形 歡迎來到新的一課,ben humphrey寫了這一課的 它是基於第一課所寫的。在這一課裡,我們將教會你如何使用地形,你將知道高度圖這個概念。下面我們來定義一些全域性變數,map size是你使用的...
NeHe OpenGL第三十四課 地形
nehe opengl第三十四課 地形 從高度圖生成地形 這一課將教會你如何從乙個2d的灰度圖建立地形 歡迎來到新的一課,ben humphrey寫了這一課的 它是基於第一課所寫的。在這一課裡,我們將教會你如何使用地形,你將知道高度圖這個概念。下面我們來定義一些全域性變數,map size是你使用的...
實習篇 第三十四天
為什麼直接寫三十四天,因為三十三那天過的太匆忙,上午好像又開了一次會議,下午便開始寫做任務!寫的東西都是第一次接觸的,難免有不懂不會的,然後師傅那邊又在忙他的事,就這樣過了一下午,下班後,我又趕著回學校參加明後兩天的畢業設計開題報告!真是 屋漏偏逢連夜雨 今天上午來到公司,任務剛做了一點,另乙個同事...