題目:把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排序的陣列的乙個旋轉(遞增或遞減的),輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。
"""把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。
輸入乙個排序的陣列的乙個旋轉(遞增或遞減的),輸出旋轉陣列的最小元素。
例如陣列為的乙個旋轉,該陣列的最小值為1。
"""def
rotate_arr
(a):
left = 0
right = len(a)-1
mid = (left+right)/2
if a[right] - a[left] !=1
and a[right] - a[left] != -1:
return a[left]
if a[left] == a[mid] or a[left] == a[right] or a[right] == a[mid]:
return min(a)
while left < right:
middle = (left+right)/2
if a[left] < a[middle]:
left = middle
elif a[left] > a[middle]:
right = middle
elif a[left] == a[middle] and right-left == 1:
return a[right]
#print(rotate_arr([0,1,1,1,0,0]))
#print(rotate_arr([3,4,5,6,7,1,2]))
print(rotate_arr([1,2,3,4,5,6,7]))
1 初級演算法題 旋轉陣列
題目 給定乙個陣列,將陣列中的元素向右移動n個位置,其中n是非負數。輸入 1,2,3,4,5,6,7 和n 3 輸出 5,6,7,1,2,3,4 向右旋轉1步 7,1,2,3,4,5,6 向右旋轉2步 6,7,1,2,3,4,5 向右旋轉3步 5,6,7,1,2,3,4 假設,給定陣列 8,7,6,...
演算法 旋轉陣列
給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1,2,3,4,5,6,7 和 k 3 輸出 5,6,7,1,2,3,4 解釋 向右旋轉 1 步 7,1,2,3,4,5,6 向右旋轉 2 步 6,7,1,2,3,4,5 向右旋轉 3 步 5,6,7,1,2,3,...
演算法 旋轉陣列
給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1,2,3,4,5,6,7 和 k 3 輸出 5,6,7,1,2,3,4 解釋 向右旋轉 1 步 7,1,2,3,4,5,6 向右旋轉 2 步 6,7,1,2,3,4,5 向右旋轉 3 步 5,6,7,1,2,3,...