leetcode20200701 貪心演算法

2021-10-07 16:34:22 字數 2819 閱讀 3398

最小差值 ii

使用貪心演算法 這道題直接用貪心 可以做

因為你想 既然通過加減要讓差值最小 那麼這一排有序陣列 第乙個數一定是要加的 最後乙個數是一定要減的 剩下的數可加可減 那麼這個最小的差值一定是某乙個數加了 下乙個數減了產生的

就這樣

class solution 

sort

(a.begin()

,a.end()

);int imin=

0,imax=0;

int len=a.

size()

;int res=a[len-1]

-a[0];

for(

int i=

1;i)return res;}}

;

行相等的最少多公尺諾旋轉

使用貪心演算法 其實我也不知道怎麼就使用貪心了

因為這個題他 就是多公尺諾骨 要全相等一行

所以分兩個 首先從第乙個陣列看起 假如a或者b的第i個值都不等於a0 那麼break 無法完成

假如有乙個可以完成 那就計數誰不等 需要調換的次數

假如這個陣列無法進行了 即換下乙個陣列 假如下乙個陣列也無法完成 那就-1 return

class solution:

def mindominorotations

(self, a: list[

int]

, b: list[

int]

)->

int:

a, b, n =0,

0,len(a)

for i in range

(n):

if a[i]

!= a[

0] and b[i]

!= a[0]

:break

if a[i]

!= a[0]

: a +=1

if b[i]

!= a[0]

: b +=1

if i == n -1:

return

min(a, b)

a, b =0,

0for i in range

(n):

if a[i]

!= b[

0] and b[i]

!= b[0]

:break

if a[i]

!= b[0]

: a +=1

if b[i]

!= b[0]

: b +=1

if i == n -1:

return

min(a, b)

return

-1

寫乙個py的程式在這裡先

擺動序列

這道題的貪心演算法在於 每次都盡量使得它擺動的最大 這樣更有利於擺動繼續下去 所以說對於解法 我們只需要對連續遞增或者遞減的取兩端值 只有變號的時候才計數 這樣就可以

class solution 

int prediff=nums[1]

-nums[0]

;int val=

(prediff==0)

?1:2

;for

(int i=

2;isize()

;i++)}

return val;}}

;

判斷子串行

這道題就是什麼狗屁貪心演算法嗎 我覺得這個是基操

class solution 

int len1=s.

size()

;int len2=t.

size()

;int i=0;

int j=0;

while

((isize()

)&&(jsize()

))else}if

(i==s.

size()

)else}}

;

最多可以買到的蘋果數量

為什麼會出錯呢

明明很簡單

class solution 

sort

(arr.

begin()

,arr.

end())

;int count=0;

int res=0;

for(

int i=

0;isize()

;i++)}

return res;}}

;

跳躍遊戲 ii

這道題是正兒八經的貪心演算法

他不是考慮每一次走能走的最大步數,而是考慮在這些能走的步中找乙個下一步能跳最遠的 下一步貪心 是這樣

class solution 

}return count;}}

;

壞了的計算器

弱弱的問一句 貪心演算法真的存在嗎 為什麼我覺得這些題沒有幾個是貪心的

這道題完全依賴於數學問題 因為這裡需要我們證明 x的減和乘 應該先換算成 y的加和除 然後

需要證明如果要除 一定是先除再加的

在這個情況下 我們再來看次數

class solution 

if(y%2==

0)else}}

;

將陣列拆分成斐波那契序列

既然是斐波那契 所以只要確定前兩個數 剩下的都是固定的

那麼我門只需要遍歷前兩個數的可能 然後判斷是否符合即可

(字串型別)程式設計解題思路整理 20200706

給出兩個字串分別為source和target,判斷在source中是否存在target,若存在則返回目標字串的首位字母的下標,若無則返回 1.例 source asjdkfjakdfja target jdk 則輸出結果為 2 source ahjdfhakdfh target mn 則輸出結果為 ...

LeetCode 打家劫舍

你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...

leetcode 打家劫舍

你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...