LeetCode 213周賽題解

2021-10-10 04:33:18 字數 2641 閱讀 7913

題意:

給你乙個整數陣列 arr ,陣列中的每個整數 互不相同 。另有乙個由整數陣列構成的陣列 pieces,其中的整數也 互不相同 。請你以 任意順序 連線 pieces 中的陣列以形成 arr 。但是,不允許 對每個陣列 pieces[i] 中的整數重新排序。

如果可以連線 pieces 中的陣列形成 arr ,返回 true ;否則,返回 false 。

思路:

由於每個數字都不相同,所以我們只要看每個子陣列在arr中是否連續出現即可。

code:

class

solution

len =

max(len, cnt);}

if(len != v.

size()

)return

false;}

return

true;}

};

題意:

給你乙個整數 n,請返回長度為 n 、僅由母音 (a, e, i, o, u) 組成且按 字典序排列 的字串數量。

字串 s 按 字典序排列 需要滿足:對於所有有效的 i,s[i] 在字母表中的位置總是與 s[i+1] 相同或在 s[i+1] 之前。

思路:

用dp或者dfs其實都可以,我就說說我場上的寫法,找到4的答案查了一波oeis發現就是n * (n - 1) * (n - 2) * (n - 3) / 24

code:

class

solution

};

題意:

給你乙個整數陣列 heights ,表示建築物的高度。另有一些磚塊 bricks 和梯子 ladders 。

你從建築物 0 開始旅程,不斷向後面的建築物移動,期間可能會用到磚塊或梯子。

當從建築物 i 移動到建築物 i+1(下標 從 0 開始 )時:

如果當前建築物的高度 大於或等於 下一建築物的高度,則不需要梯子或磚塊

如果當前建築的高度 小於 下乙個建築的高度,您可以使用 一架梯子 或 (h[i+1] - h[i]) 個磚塊

如果以最佳方式使用給定的梯子和磚塊,返回你可以到達的最遠建築物的下標(下標 從 0 開始 )。

思路:

貪心來講,需要磚頭較多的用梯子比較划算,所以我們用堆來維護ladders個最大的磚頭數,看最遠能延伸多遠。

code:

class

solution

return ans;}}

;

題意:

bob 站在單元格 (0, 0) ,想要前往目的地 destination :(row, column) 。他只能向 右 或向 下 走。你可以為 bob 提供導航 指令 來幫助他到達目的地 destination 。

指令 用字串表示,其中每個字元:

『h』 ,意味著水平向右移動

『v』 ,意味著豎直向下移動

能夠為 bob 導航到目的地 destination 的指令可以有多種,例如,如果目的地 destination 是 (2, 3),「hhhvv」 和 「hvhvh」 都是有效 指令 。

然而,bob 很挑剔。因為他的幸運數字是 k,他想要遵循 按字典序排列後的第 k 條最小指令 的導航前往目的地 destination 。k 的編號 從 1 開始 。

給你乙個整數陣列 destination 和乙個整數 k ,請你返回可以為 bob 提供前往目的地 destination 導航的 按字典序排列後的第 k 條最小指令 。

思路:

也就是給你n個『v』和m個『h』,讓你找到字典序第k大的序列。

首先我們有c(n + m, m)種方案數,因為相當於在n+m中選擇哪一次向下走。

那麼我們就看第一次是用h還是用v,可以通過判斷是否大於k來決定。然後就把剩下的子問題同樣的步驟處理即可

code:

typedef

long

long ll;

const

int maxn =30+

10;class

solution

int n = destination[1]

, m = destination[0]

, lim = n + m;

string res;

for(

int i =

1; i <= lim;

++i)

else

}return res;}}

;

今天又來刷題了 leetcode 213

你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝...

leetcode213 打家劫舍

難度簡單683收藏分享切換為英文關注反饋你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,...

LeetCode 213 打家劫舍

很明顯該題目的難度在於首尾相連,而198題的打家劫舍是單排列,首尾相連如何理解?首尾相連意味著第乙個和最後乙個房屋只能選擇偷乙個,即偷第乙個房屋不偷最後乙個房屋,或者不偷第乙個房屋偷最後乙個房屋。所以該問題就能分解成兩個單排列的問題。問題1 偷第乙個房屋不偷最後乙個房屋,偷取範圍為 0 n 2,問題...