力扣第196場周賽題解

2021-10-07 21:24:20 字數 2142 閱讀 3273

比賽心得:本次比賽的經歷讓我大致地了解到了力扣周賽的難度:主要是前兩題比較簡單、第三題難度加深、最後一題相比來說最難。隨著難度層次的逐漸加深,知識點也逐漸增多,而且周賽涉及到的知識點也比較廣泛,是一種很好的測驗和檢驗水平的方法。

知識點:排序、遍歷

分析:簡單題,遍歷即可

給你乙個數字陣列 arr 。

如果乙個數列中,任意相鄰兩項的差總等於同乙個常數,那麼這個數列就稱為 等差數列 。

如果可以重新排列陣列形成等差數列,請返回 true ;否則,返回 false 。

class

solution

return

true;}

};

知識點:遍歷、求最值

分析:兩隻螞蟻在碰到之後反向走,但實質上只是交換了身份,從全域性來看並沒有什麼影響。找到隔目標端點最遠的螞蟻即可

有一塊木板,長度為 n 個 單位 。一些螞蟻在木板上移動,每只螞蟻都以 每秒乙個單位 的速度移動。其中,一部分螞蟻向 左 移動,其他螞蟻向 右 移動。

當兩隻向 不同 方向移動的螞蟻在某個點相遇時,它們會同時改變移動方向並繼續移動。假設更改方向不會花費任何額外時間。

而當螞蟻在某一時刻 t 到達木板的一端時,它立即從木板上掉下來。

給你乙個整數 n 和兩個整數陣列 left 以及 right 。兩個陣列分別標識向左或者向右移動的螞蟻在 t = 0 時的位置。請你返回最後乙隻螞蟻從木板上掉下來的時刻。

class

solution

for(

int i=

0;isize()

;i++

)return

max(l,n-r);}

};

知識點:遍歷、列舉

分析:從最後的執行結果來看,雖然這種方法和其他人的動歸相比時間複雜度上有一定的差距(但是差距不大,也遠沒有超時),但是這樣寫的空間複雜度很低。這種思路每次只計算ij右下角能組成的矩形,是一種思路比較簡單的方法

給你乙個只包含 0 和 1 的 rows * columns 矩陣 mat ,請你返回有多少個 子矩形 的元素全部都是 1 。

class

solution

res++;}

}}}return res ;}}

;

執行結果:

執行用時:108 ms, 在所有 c++ 提交中擊敗了52.97%的使用者

記憶體消耗:13.3 mb, 在所有 c++ 提交中擊敗了100.00%的使用者

知識點:遞迴,字串處理

分析:本問題主要實現方法是找出字串中最小的一位數,並通過其位數的次數把它移到最前面,並遞迴重複此步驟,基本思路已在注釋中寫出。但這樣做時間複雜度比較高,想到複雜度更低的方法了我會及時改進

給你乙個字串 num 和乙個整數 k 。其中,num 表示乙個很大的整數,字串中的每個字元依次對應整數上的各個數字 。

你可以交換這個整數相鄰數字的數字 最多 k 次。

請你返回你能得到的最小整數,並以字串形式返回。

class

solution

if(k<=0)

return num;

char min=

'9'+1;

//ascll的'9'+1

int t=0;

//用於遞迴

for(

int i =

0; i size()

&& i<=k ;

++i)}}

//優先把最小的在t位的數拿到最前面,此過程消耗t步。依此進行遞迴

return min+

mininteger

(num.

substr(0

,t)+num.

substr

(t+1

),k-t);}

};

第 196 場力扣周賽題解

5452.判斷能否形成等差數列 思路 排序後直接看相鄰元素的差是否唯一即可。class solution 5453.所有螞蟻掉下來前的最後一刻 思路 這題千萬不要往難了想,雖然你要回頭,但是你仔細想想,假如乙個螞蟻往左走的過程中,遇到乙個往右走的螞蟻,此時兩隻螞蟻都要朝著其各自原來相反的方向繼續走,...

LeetCode第196場周賽題解

2020.7.5第196場周賽 判斷乙個給定的數列能否形成乙個等差數列。先將給定的數列排序,判斷每兩個相鄰的數的差值是否相等即可。class solution return true 給定兩個陣列,分別表示向左走和向右走的螞蟻的初始位置,n為木板的總長度,兩隻螞蟻相遇時會改變方向,計算最後乙隻螞蟻從...

第185場力扣周賽題解

5388.重新格式化字串 思路 做法很多,我的方法是定義兩個佇列分別存數字和字元,然後在滿足題目要求能夠格式化的情況下穿插著加入答案即可。class solution if math.abs q1.size q2.size 1 return if q1.size q2.size work q1,q2...