在排序陣列中查詢元素的第乙個和最後乙個位置
class
solution
:def
searchrange
(self, nums: list[
int]
, target:
int)
-> list[
int]:if
not nums:
return[-
1,-1
] first_index = self.firstk(nums,target)
last_index= self.lastk(nums,target)
if first_index >
len(nums)-1
or nums[first_index]
!=target:
first_index =-1
if last_index <=
0or nums[last_index-1]
!=target:
last_index =
0return
[first_index,last_index-1]
deffirstk
(self,nums,target)
: left =
0 right =
len(nums)
while left < right:
mid =
(left + right)//2
if nums[mid]
< target:
left = mid +
1else
: right = mid
return left
deflastk
(self,nums,target)
: left =
0 right =
len(nums)
while left < right:
mid =
(left + right)//2
if nums[mid]
<= target:
left = mid +
1else
: right = mid
return left
跳躍遊戲
思路:一直更新能跳到的最大長度即可。
class
solution
:def
canjump
(self, nums: list[
int])-
>
bool:if
not nums:
return
k =0for i in
range
(len
(nums)):
if i > k or k >=
len(nums)-1
:break
if nums[i]
+ i > k:
k = nums[i]
+ i
if k >=
len(nums)-1
:return
true
else
:return
false
不同路徑
dp[i][j] = dp[i-1][j] + dp[i][j-1]
class
solution
:def
uniquepaths
(self, m:
int, n:
int)
->
int:
if m <=
0or n <=0:
return
0if m ==
1or n ==1:
return
1
pre_row =[1
]*(m -1)
pre_col =
1for i in
range(1
,n):
for j in
range
(m -1)
: pre_row[j]
= pre_col + pre_row[j]
pre_col = pre_row[j]
pre_col =
1return pre_row[m-
2]
關鍵是思考,想清楚關係,看是否能空間度也能達到最優
最長上公升子串行
class
solution
:def
lengthoflis
(self, nums: list[
int])-
>
int:
ifnot nums:
return
0 dp =
for i in
range
(len
(nums)):
1)for j in
range
(i):
if nums[i]
> nums[j]
: dp[i]
=max
(dp[i]
, dp[j]+1
)return
max(dp)
時間複雜度優化,動態規劃加二分查詢 Leetcode 打家劫舍II(中等)動態規劃
題目描述 你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不...
LeetCode 中等 動態規劃 硬幣面值
硬幣。給定數量不限的硬幣,幣值為25分 10分 5分和1分,編寫 計算n分有幾種表示法。結果可能會很大,你需要將結果模上1000000007 示例1 輸入 n 5 輸出 2 解釋 有兩種方式可以湊成總金額 5 55 1 1 1 1 1 示例2 輸入 n 10 輸出 4 解釋 有四種方式可以湊成總金額...
中等 動態規劃經典 堆石子問題
1.問題描述 設有n堆沙子排成一排,其編號為1,2,3,n n 100 每堆沙子有一定的數量。現要將n堆沙子並成為一堆。歸併的過程只能每次將相鄰的兩堆沙子堆成一堆,這樣經過n 1次歸併後成為一堆。找出一種合理的歸併方法,使總的代價最小。輸入格式 輸入由若干行組成,第一行有乙個整數,n 1 n 100...