二分
#11.py
# 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列 [3,4,5,1,2] 為 [1,2,3,4,5] 的乙個旋轉,該陣列的最小值為1。
class
solution
:def
minarray
(self, numbers: list[
int])-
>
int:
left=
0 right=
len(numbers)-1
while leftmid=
(left+right)//2
if numbers[mid]
>numbers[right]
: left=mid+
1elif numbers[mid]
: right=mid
else
:right-=
1return numbers[left]
#16.py
# 實現函式double power(double base, int exponent),求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。
# 示例 1:
# 輸入: 2.00000, 10
# 輸出: 1024.00000
# 示例 2:
# 輸入: 2.10000, 3
# 輸出: 9.26100
# 示例 3:
# 輸入: 2.00000, -2
# 輸出: 0.25000
# 解釋: 2-2 = 1/22 = 1/4 = 0.25
class
solution
:def
mypow
(self, x:
float
, n:
int)
->
float
:if n==0:
return
1elif n<0:
return
1.0/self.mypow(x,
-n)elif n%2==
0:return self.mypow(x*x,n//2)
else
:return self.mypow(x*x,n//2)
*x
#4.py
# 在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
# 示例:
# 現有矩陣 matrix 如下:
# [# [1, 4, 7, 11, 15],
# [2, 5, 8, 12, 19],
# [3, 6, 9, 16, 22],
# [10, 13, 14, 17, 24],
# [18, 21, 23, 26, 30]
# ]# 給定 target = 5,返回 true。
# 給定 target = 20,返回 false。
class
solution
:def
findnumberin2darray
(self, matrix: list[list[
int]
], target:
int)
->
bool:if
len(matrix)==0
:return
false
i=0 j=
len(matrix[0]
)-1while i<
len(matrix)
and j>=0:
if matrix[i]
[j]i+=
1elif matrix[i]
[j]>target:
j-=1else
:return
true
return
false
#47.py
```python3
# 在乙個 m*n 的棋盤的每一格都放有乙個禮物,每個禮物都有一定的價值(價值大於 0)。你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向右或者向下移動一格、直到到達棋盤的右下角。給定乙個棋盤及其上面的禮物的價值,請計算你最多能拿到多少價值的禮物?
# 示例 1:
# 輸入:
# [# [1,3,1],
# [1,5,1],
# [4,2,1]
# ]# 輸出: 12
# 解釋: 路徑 1→3→5→2→1 可以拿到最多價值的禮物
class
solution
:def
maxvalue
(self, grid: list[list[
int]])
->
int:
m=len(grid)
n=len(grid[0]
) dp=[[
0]*n for _ in
range
(m)]
dp[0]
[0]=grid[0]
[0]for i in
range(1
,n):
dp[0]
[i]=dp[0]
[i-1
]+grid[0]
[i]for i in
range(1
,m):
dp[i][0
]=dp[i-1]
[0]+grid[i][0
]for i in
range(1
,len
(grid)):
for j in
range(1
,len
(grid[0]
)): dp[i]
[j]=
max(dp[i-1]
[j],dp[i]
[j-1])
+grid[i]
[j]return dp[-1
][-1
]
#53.py
# 統計乙個數字在排序陣列**現的次數。
# # 示例 1:
# 輸入: nums = [5,7,7,8,8,10], target = 8
# 輸出: 2
# 示例 2:
# 輸入: nums = [5,7,7,8,8,10], target = 6
# 輸出: 0
class
solution
:def
search
(self, nums: list[
int]
, target:
int)
->
int:
# l,r=0,len(nums)-1
# while l# mid=(l+r)//2
# if nums[mid]>target:
# r=mid
# elif nums[mid]# l=mid+1
# res1=l
# l,r=0,len(nums)-1
# while l# mid=(l+r)//2
# if nums[mid]>target:
# r=mid
# elif nums[mid]# l=mid+1
# res2=l
# return res2-res1+1
import bisect
left=bisect.bisect_left(nums,target)
right=bisect.bisect(nums,target)
return right-left
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
python二分法查詢 Python 二分法查詢
二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...
二分法,二分搜尋
二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...