LeetCode 第202場周賽題解報告

2021-10-09 05:54:42 字數 2468 閱讀 6666

5185. 存在連續三個奇數的陣列

從 i = 2 開始列舉,檢查 arr[i-2], arr[i-1], arr[i] 是否均為奇數。

class

solution

}return

false;}

};

5488. 使陣列中所有元素相等的最小運算元

陣列 arr 滿足 arr[i] = (2 * i) + 1 ( 0 <= i < n )。

其所有元素的累加和為 ((2*1+1)+(2*n+1))*n/2,化簡後為 (n+2)*n。

有累加和可知,操作完成後,每個元素均為 n+2。

操作前,arr 中總共有 x 個元素小於 n+2,x=⌊

n/2⌋

x = \lfloor n/2 \rfloor

x=⌊n/2

⌋。這 x 個元素的累加和為⌊n(

n+4)

/4⌋\lfloor n(n+4)/4\rfloor

⌊n(n+4

)/4⌋

操作後,前 x 個元素的累加和為 ⌊(n

+2)n

/2⌋\lfloor(n+2)n/2\rfloor

⌊(n+2)

n/2⌋

。因為每次操作,小於 n+2 的元素的累加和會增加一,所以兩和作差即為答案,⌊(n

2)/4

⌋\lfloor(n^2)/4\rfloor

⌊(n2)/4⌋。

class

solution

};

5489. 兩球之間的磁力

換個題目的描述方式,向 n 個筐中放入m個球,使距離最近的一對球的距離最遠。

劃重點,一般題目**現最近最遠,最小最大,應該就是在考察二分/三分了。

可用二分演算法求解的題目必須具備單調性:如果閾值 x 有解,那麼所有小於 x 的閾值均有解。如果閾值 y 沒有解,那麼所有大約 y 的閾值均沒有解。

嘗試證明下這道題的單調性:

既然滿足單調性,直接套上二分模板,然後運用貪心演算法,檢查是否存在方案滿足閾值 mid 即可。

class

solution}}

return

false;}

intmaxdistance

(vector<

int>

& position,

int m)

else

}return l-1;}};

5490. 吃掉 n 個橘子的最少天數

題目中給出了三種策略:

最直接的思路就是暴力搜尋:

f (n

)=mi

nf(n-1) + 1 \\ f(n/2) + 1,n\%2 == 0 \\ f(n/3) + 1, n\%3 == 0 \\ \end\right.

f(n)=m

in⎩⎨

⎧​f(

n−1)

+1f(

n/2)

+1,n

%2==

0f(n

/3)+

1,n%

3==0

​但是這樣暴力,即使用上記憶化,也要計算 n 個子問題。既然太慢了,那就嘗試優化一下。

觀察一下上述式子,可以發現是只使用策略一導致了較多的計算量,而且當 n 較大時,只使用策略一顯然不是最優解。

只使用一次策略三和多次策略一需要 n%3 + 1 + n/3天。

顯然當 n >= 3 時,後兩種組合方案第一種僅使用策略一的方案更優。

後兩種組合方案,哪個更優呢?不知道哪個更有鴨,只好都算一下然後取較小值咯,反正計算量也很小了~

總結一下:

當 n <= 2 時,f(n) = n。

當 n > 2 時有:

Leetcode 第 202 場周賽

感覺就是拼手速的比賽,沒什麼意思,再打幾次把排名打到前面就不打了。存在連續三個奇數的陣列 給你乙個整數陣列 arr,請你判斷陣列中是否存在連續三個元素都是奇數的情況 如果存在,請返回 true 否則,返回 false class solution return false 使陣列中所有元素相等的最小...

LeetCode第202場周賽

用等差數列求和公式計算一下就知道,不管n為多少,所有數的和都是n 2,這樣平均數就是n,由於陣列前半部分和後半部分關於n對稱 關於中間位置對稱的兩個位置的 兩個元素相加和為2 n 所以我們只需要遍歷陣列的前半部分,把所有數和n的差值加起來,就是最終的答案了。首先,題目給的position陣列可能是無...

LeetCode 第 202 場周賽 題解

思路 暴力 簽到題,暴力遍歷即可。class solution return false 複雜度分析 遍歷陣列,時間複雜度o n 沒有使用額外變數,空間複雜度為o 1 思路 數學 根據題意,可以直接將陣列以中心元素為對稱點,兩兩配對,操作的次數相同。所以只需要針對陣列長度奇偶進行分析即可。實現細節 ...