Posts by Tag

LeetCode

LeetCode 3187. Peaks in Array

周賽 402。又是線段樹題,這次我有把樹搞出來,但是題目查詢的地方沒想通,又繞了大遠路去搞 sorted list。 除了思路有點障礙之外,寫得還很醜,真的差點沒寫出來。

LeetCode 3171. Find Subarray With Bitwise AND Closest to K

周賽 400。更新答案少寫一行,虧一個 WA,好慘。 LC 官方最近宣布使用先進的作弊檢查計數,嚴格禁止任何作弊行為,不知道效果如何。 唯一確定的是這場伺服器有點問題,希望別又在我上分的時候 unrate。

LeetCode 3138. Minimum Length of Anagram Concatenation

周賽 396。又是超級爛的題目描述,不管 LCUS 原文或是 LCCN 的翻譯都很爛,不知道在搞什麼。 描述偷改過了,原本好像是講: typically using all the original letters exactly once

LeetCode 3136. Valid Word

周賽 396。狗屎爛題,大概有一半的人都看不懂題意。而且還有小陷阱,差點吐血。

LeetCode 3108. Minimum Cost Walk in Weighted Graph

周賽 392。這題也有點問題,沒講清楚起點和終點相同要怎樣,只能猜 -1 或是 0。 前一百名內有 8X 人都猜錯了,笑死。至少錯一次後就知道答案,沒有隱藏測資很良心了。

LeetCode 3086. Minimum Moves to Pick K Ones

周賽 389。基本上是以前出過題目的大補包,道理我都懂,但就是一直寫錯。 前綴和求距離和這東西好像是第四次考,該替他準備模板了。 相似題:

LeetCode 3047. Find the Largest Area of Square Inside Two Rectangles

周賽386。我真的是被這題搞死了,寫半天還錯好多次,剩下時間還不夠做 Q3。應該會破最低名次紀錄,最近幾場周賽打的分全沒了。 上次 3027. find the number of ways to place people ii 也是,看來我的腦子碰到座標系相關的題都會大爆炸。

LeetCode 3001. Minimum Moves to Capture The Queen

周賽379。又打錯變數名稱,再喜提一隻BUG。 這種囉嗦的分類討論,一次寫出正確邏輯還是挺高興的。結果碰到打錯字這種低能錯誤,心情複雜。 而且我不會玩西洋棋。

LeetCode 2983. Palindrome Rearrangement Queries

周賽378。有夠臭長的模擬題,非常多細節要考慮。 雖然說不需要什麼高級的DSA,但要在一小時內寫出來還挺難的,我用python也寫了一小時多。

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2958. Length of Longest Subarray With at Most K Frequency

雙周賽119。非常簡單,但是測資好像有點爭議。 題目保證了1 <= k <= nums.length,但聽說有好幾筆測資出現大於nums長度的k,害某些人噴錯。 可能有人拿k和len(nums)取最小值,反而被這個爛東西坑了。

LeetCode 2940. Find Building Where Alice and Bob Can Meet

周賽372。前陣子在整理線段樹模板,剛好練習到相似題2286. booking concert tickets in groups。 樹是有成功搞出來,但是誤會題目的要求,有些小問題會算出錯誤答案,好可惜。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2928. Distribute Candies Among Children I

雙周賽117。最近周賽真的是越來越扯,前兩題分別是分糖果1和2。但是在開賽的前幾日,分糖果3竟然以付費題的形式出現。 而且內容完全一樣,只是測資範圍變大,直接向下兼容本次兩題。真的是pay to win。

LeetCode 2924. Find Champion II

周賽370。剛開始想成拓樸排序,想說Q2怎麼會出這種,還真不好做。當然是有更簡單的方法。

LeetCode 2923. Find Champion I

周賽370。這題有點腦筋急轉彎,害我卡了一陣子。 然後網站伺服器也在卡,中國站卻沒事,只能說中國站各方面(可用性、題庫、價格)都做得比本站好。

LeetCode 2906. Construct Product Matrix

周賽367。這題可有趣了,根據不同方法,實作的難度和程式碼量有著天大的差異。 這種沒有hard的手速場還是穩穩地寫,沒出BUG才不會排名炸裂。

LeetCode 2901. Longest Unequal Adjacent Groups Subsequence II

雙周賽115。最近好幾次都是題目內容完全一樣,只改測資範圍就當成兩題,所以有人都做第二題然後去前面貼一樣的code。 結果這次好了,內容有差異,答案邏輯還完全不一樣,騙到不少人。

LeetCode 2846. Minimum Edge Weight Equilibrium Queries in a Tree

周賽361。上週才考過倍增,這週馬上就考進階用法,真變態。 雖說是進階版,但LCA倍增其實算是競賽的常見題目,網路上隨便都找得到模板可以套用。可能因此通過人數比上次還多。

LeetCode 2830. Maximize the Profit as the Salesman

周賽359。印象中哩扣上有兩題相似題,其中一個幾乎完全一樣,但是這次有四千人通過,也太扯。 相似題2008. maximum earnings from taxi,當初才一千人通過。

LeetCode 2787. Ways to Express an Integer as Sum of Powers

雙周賽109。還是dp,測資範圍很奇怪,總感覺有奇怪的地雷,害我擔心很久。 雖然我是沒有踩中,但是理論上不重複的測資只有300*5種,官方卻搞了1502組,不知道存什麼心。

LeetCode 2766. Relocate Marbles

雙周賽108。這Q2相對佛心,還保證移動來源一定有彈珠,讓不少人逃過WA,不如跟Q1交換。

LeetCode 2751. Robot Collisions

周賽351。有點像是2731. movement of robots,當初浪費一堆時間做的模擬解竟然在今天得到回報。 然後我還想到[735. Asteroid Collision]這題,基本上是一樣的東西。

LeetCode 2731. Movement of Robots

雙周賽106。這種腦筋急轉彎題真的是很垃圾,講一堆廢話結果都沒有用,每次都被這種爛題浪費時間。

LeetCode 2681. Power of Heroes

雙周賽104。這題也繞好大一圈的遠路,搞出一個沒什麼人用的解法,但好歹是過了。

LeetCode 2680. Maximum OR

雙周賽104。這題有點小難度,結果我搞出的解法和大部分人都不一樣。

LeetCode 2663. Lexicographically Smallest Beautiful String

周賽343。關鍵點都有推出來,結果實作做不出來。 但我沒發現輸入的s也是美麗的,一直在糾結索引i進位後,從i+1開始所有字串都要變回a,其實在最尾端字元+1的情況下,當非尾端的索引i進位時,i+1肯定也是進位過的。 卡在奇怪的地方上,有點難受。

LeetCode 2658. Maximum Number of Fish in a Grid

雙周賽103。這鬼題當初還標hard,一看發現根本是經典題,真是騙很大。今天寫題解發現被打回medium。 順帶一題,這題正是字面意思的竭澤而漁。

LeetCode 2614. Prime In Diagonal

周賽339。難得Q1的數字這麼大,搞到質數篩直接TLE,太誇張了。 聽說有不少人沒有把1當成質數吃了WA。說起來我的模板也沒有判斷到這點,趕緊去更新。

LeetCode 2608. Shortest Cycle in a Graph

雙周賽101。我一直卡在不知道如何處理奇數環和偶數環。正確應該在入佇列之前就判斷環,而不是進去後才判斷,有夠尷尬。 最近官方水準越來越垃圾,不抓作弊就算了,還直接這種google名稱就可以找到答案的題目,直接冒出兩三千個作弊哥貼答案,誠實的同學們真的被打個半死。

LeetCode 2603. Collect Coins in a Tree

周賽338。網站卡了40幾分鐘,做完前面三題根本沒時間看,連題目都沒看懂就結束了。不過我倒有猜到是拓樸排序。

LeetCode 2581. Count Number of Possible Root Nodes

雙周賽99。不小心開了10^5*10^5的陣列,結果不噴MLE而是TLE。我想了半天不理解為什麼O(N)解不會過,後來才發現是被陣列初始化時間卡死,太智障了。

LeetCode 2547. Minimum Cost to Split an Array

周賽329。靠python有時候真的很吃運氣,明明複雜度是對的,可是就是會TLE。比賽當時優化了兩次才AC。 後來再把TLE的程式碼交一次,竟然又AC了,莫名其妙。

LeetCode 2536. Increment Submatrices by One

周賽328。這題有點微妙,以前在Q2用了2D前綴和,後來才發現只需要暴力法,總覺得這次也要暴力。 結果看到測資範圍發現不對,但又想不到什麼太好的方法,無法確定會不會TLE。

LeetCode 2514. Count Anagrams

雙周賽94。之前看過atlassian考類似的題目,當時只想說:這誰他媽面試做得出來。沒想到兩個月內就來討債了。

LeetCode 2483. Minimum Penalty for a Shop

雙周賽92。這題和我的相性不太好,長度N的陣列對應到N+1種選擇,花了一點時間才想通。 再加上字元的”N”和我用來計算輸入常數的N衝突,想變數名稱卡好久,最後選了小寫n, y來計算字元”N”, “Y”感覺很不舒服。

LeetCode 2478. Number of Beautiful Partitions

周賽320。本來用python寫個O(k*N^2)的dp解,可能沒睡醒才覺得又是py時間太嚴格,一氣之下跑去用go寫一次就過了。後來想想才發現不對,O(k*N^2)將近10^9次運算,再怎樣都不會是正確答案,看來是golang執行快到一個誇張。

LeetCode 2470. Number of Subarrays With LCM Equal to K

周賽319。相似題2447. number of subarrays with gcd equal to k。 比賽時忘記python內建有lcm函數,自己寫了奇怪的判斷有通過,後來被rejudge掉,真是死的莫名其妙。

LeetCode 2456. Most Popular Video Creator

周賽317。又是臭長題,我竟然沒出錯,給自己一個肯定。感覺這種很囉唆的題目還是乖乖拆成多個步驟來解比較好,為了省字數而拿到WA得不償失。

LeetCode 2454. Next Greater Element IV

雙周賽90。眼殘到不行,明明範例一和我的答案不同,還是交了出去,好冤枉的WA。即使總共吃了4個BUG,還是拿到600名,也不算太差。

LeetCode 2453. Destroy Sequential Targets

雙周賽90。之前看人家寫貪心題都可以壓成one loop,感覺很帥就試試看,結果寫錯拿一個WA。我看以後還是乖乖拆成多個步驟。

LeetCode 2451. Odd String Difference

雙周賽90。提交的時候本來要用ctrl+/快捷鍵註解掉測試用的輸出,結果ctrl鬆掉只打出一個斜線,得到RE。

LeetCode 89. Gray Code

今天每日題的原題,當初碰到也覺得很奇妙,比較需要特別記住這個東西。

LeetCode 2421. Number of Good Paths

周賽312。真的是吐血了,寫一半有人打電話來,寫出一坨狗屎code,分心狀況下根本沒辦法debug。後來才發現我把for寫成if,整題就毀了,好慘。

LeetCode 2409. Count Days Spent Together

雙周賽87。夢回大學時期,那時要求算日期增減,還要考慮閏年,真是難搞的不行。 那次真留下深刻印象,我寫了一大串的垃圾,改成查表很簡單就解決了。

LeetCode 460. LFU Cache

LRU的好兄弟,打鐵趁熱一起做掉,但是花了好多時間才整理成好看的樣子。 中文叫做最少使用快取,這次真的是把使用次數最少的踢掉,有多個次數相同就踢最久沒用過那個(也就是LRU)。

LeetCode 146. LRU Cache

面試常考題,終於找到時間來做個詳解。 中文叫做最近最不常使用快取,但是常使用是指使用次數還是使用時間?要記住LRU重點是上次的使用時間,把最久沒用的踢出去。 乾脆叫他太久沒上會被踢快取。

LeetCode 393. UTF-8 Validation

每日題。超多人點爛,可能是題目描述不太清楚的關係。雖然一開始我也覺得是垃圾題,但看到最佳解後覺得非常漂亮。

LeetCode 2407. Longest Increasing Subsequence II

周賽310。每次python寫線段樹都很痛苦,很容易出bug就算了,還常常超時。明明就是正確的複雜度還是TLE,嘔氣到不行。 比賽結束後我自己又拿當時TLE的程式碼再交一次,竟然就過了(????),真的氣氣氣氣,還我300名來。

LeetCode 2402. Meeting Rooms III

周賽309。相似題1606. find servers that handled most number of requests。沒有排序吃一個WA,好慘。

LeetCode 2398. Maximum Number of Robots Within Budget

雙周賽86。一開始想到了單調堆疊來找到各個chargeTimes[i]的左右邊界,後來發現是錯的。 後來及時想到二分搜+滑動窗口,但是二分搜寫到一半突然開竅:直接滑動不就得了嗎?

LeetCode 2392. Build a Matrix With Conditions

周賽308。其實算是很簡單的Q4,但我沒看出來是拓樸排序,在那邊貪心半天。賽後看到知道是拓樸排序就馬上寫出來了,好冤。

LeetCode 2381. Shifting Letters II

雙周賽85。第一眼覺得是線段樹,冷靜想想線段樹不應該出現在Q3才對。 其實是因為我沒有存範圍修改的線段樹模板。

LeetCode 2379. Minimum Recolors to Get K Consecutive Black Blocks

雙周賽85。老實說看到這題有嚇到,一時想不到怎麼暴力解,難道Q1就要求滑動窗口?感覺這次比賽有點可怕。 雖然後來確定能用暴力解,但是討論區有人說做出Q4確做不出這題,有點誇張。

LeetCode 2376. Count Special Integers

周賽306。這題真是傷透我心,本來看測資範圍10位數應該也是可以回溯的,很抱歉不行。但是又聽說JAVA和C++能夠通過,看來又是歧視PY。

LeetCode 46. Permutations

LC75學習計畫。以前大一考試碰到的題目,那時候根本什麼都不會,根本是難度超標。考完試後才去查到一個比較偏門的解法,但沒有真正搞懂。今天重新思考了一次,原來是如此的經典。

LeetCode 2370. Longest Ideal Subsequence

周賽305。第一次看到Q4是medium,但我卻一點頭緒都沒有。賽後才知道這題也是DP,當下心情真的糟到一個不行。 難得Q3和Q4都是理應擅長的DP,結果兩題都沒發現,真的該好好反省。

LeetCode 458. Poor Pigs

每日題。這好像是微軟的毒老鼠面試題改版,難怪覺得眼熟眼熟。

LeetCode 858. Mirror Reflection

每日題。寫起來不是很舒服的題,早上本來看到900個爛,現在已經1300了。倒是沒想到暴力模擬也能過就是了。

LeetCode 2360. Longest Cycle in a Graph

周賽304。跟Q3內容幾乎一樣,還以為是我看錯。當時第一個想法是時間戳,可惜時間剩下5分鐘,不夠我做出來。 後來確認這方法確實可行,代表我有在前幾次的周賽中吸收到新知,算是有成長。

LeetCode 2359. Find Closest Node to Given Two Nodes

周賽304。不知道為什麼無法理解題目描述,還以為要node1盡可能多走,node2盡可能少走。等了一小時才開竅,真想打死我自己。 真心希望這種較大較小的關係可以用公式來表達,不然至少句子短一點。

LeetCode 916. Word Subsets

每日題。其他語言都要寫一長串,就只有python寫起來特別簡單,而且還可以簡化到非常誇張的程度。

LeetCode 621. Task Scheduler

LC75學習計畫。這題雖然有heap標籤,和我一開始的想法相同,要應用起來卻很麻煩,最後選擇完全不同的方法。

LeetCode 2350. Shortest Impossible Sequence of Rolls

雙周賽83。超級腦筋急轉彎,總覺得有O(N)解法,但就是想不出來。 說起來leetcode官方也是誇張,有人直播洩題4次都沒被懲處,所謂的作弊零容忍根本是笑話,看看就好。

LeetCode 86. Partition List

每日題。又是linked list,但沒有昨天的那麼麻煩。今天寫出來的code跟之前幾乎完全相同,差在變數名不同而已,真神奇。

LeetCode 1696. Jump Game VI

每日題。明明以前寫過,但是卻想不起來。看來我跟單調佇列還是不夠熟。

LeetCode 97. Interleaving String

每日題。好久以前就看過這題,但是想不出bottom up解法,感覺很麻煩就沒碰。沒想到今天腦子不太對勁,用top down一次就過了。

LeetCode 135. Candy

每日題。依照小朋友的分數來發糖果,同樣分數拿到不同數量的糖果沒關係,但是比低分的人一定不行拿更多,其實也不是很公平。

LeetCode 2326. Spiral Matrix IV

周賽300。看到Spiral Matrix就想說完蛋,這系列都很麻煩,結果還真的卡了我十分鐘debug。

LeetCode 2322. Minimum Score After Removals on a Tree

周賽299。看就想到樹狀dp,但不知道怎麼表達切開的子樹。一直想著要怎麼在dfs函數上處理切割第幾刀,整個思路都是錯的。 說起來這兩次周賽都完全沒出bug,雖然都沒做出Q4,但排名還算前面,算挺開心的。

LeetCode 2315. Count Asterisks

雙周賽81。這題還滿有趣的,看了他人解法才發現我的比較不同,其實我的解法應該比較好想到才對,怎麼都沒人這樣做。

LeetCode 665. Non-decreasing Array

每日題。好久好久以前做過,但是沒真正搞懂。今天還是錯了一模一樣的測資,但是好在馬上就能想通錯在哪,也是一種進步。

LeetCode 2312. Selling Pieces of Wood

周賽298。雖然知道是DP但不知道怎麼切塊,想了半天想不出,好苦。 雖然官方標籤有個回溯,但我還真沒看到有人用回溯解法。

LeetCode 745. Prefix and Suffix Search

每日題。好像是想考字典樹吧,結果被我偷雞偷過了。字典樹的解法很多種,但沒一種我覺得容易理解的。

LeetCode 2306. Naming a Company

周賽297。當時想到了以前綴、後綴分組,但就是沒想到用集合做運算,只通過74/89測資。

LeetCode 120. Triangle

每日題。這題如果按照題意往下走會很麻煩,換個方向會簡單非常多。

LeetCode 2296. Design a Text Editor

周賽296。有點尷尬的題目,難度不高,但我選錯資料結構差點陣亡,好在剩下最後2分鐘趕快改過來。

LeetCode 2293. Min Max Game

周賽296。模擬題,幸好腦筋轉得快,似乎不少人糾結在怎麼找規律而卡很久。

LeetCode 29. Divide Two Integers

每日題。這題從好久以前就看過了,沒什麼想法,而且還超多爛,就沒想碰他。竟然出現在每日題,看來會增加更多爛。

LeetCode 464. Can I Win

隨便抽的一題,感覺最後的測資有點沒意思,故意放來卡人家WA的。

LeetCode 90. Subsets II

複習回溯經典題,發現我以前竟然偷懶,全都用set去重複,沒有一次自己剪枝的。

LeetCode 2179. Count Good Triplets in an Array

模擬雙周賽72。一開始還真是完全摸不著頭緒,看了滿多篇解答,不是解釋不清楚,就是刻意寫得很艱深,連集合論的bijection都拿出來講,好險最後是有看到幾篇正常的。

LeetCode 2178. Maximum Split of Positive Even Integers

模擬雙周賽72。回想起來,當時練習的時候是5/7晚上10點左右,結果網站竟然炸掉快半小時!當時還想說:明天周賽最好不要給我出事,然後就真的出事了。

LeetCode 282. Expression Add Operators

跟今天每日題有點像,特地回來複習。但是我又開始糾結backtracking和dfs到底差在哪裡? 有一說是backtracaking在剪枝的時候會恢復上一動的狀態,以退回走過的路徑;又有一說dfs是處理顯式樹(路徑已經固定),而backtracaking處理的是隱式樹(自己找可行路徑出來)。 那麼這題符合隱式樹,...

LeetCode 790. Domino and Tromino Tiling

推理型DP,第一次碰到的時候是每日題,那時我直接印出所有測資找出公式解,但沒有實際理解怎麼推導的。今天特地來補課,發現還真有點難度。

LeetCode 2262. Total Appeal of A String

周賽291。苦思久等的DP終於來了,結果想不出轉移方程式,又是三題幫。 看到測資10^5還是不信邪的用bitmask做O(N^2),只通過62/76測資。

LeetCode 2261. K Divisible Elements Subarrays

周賽291。把子陣列看成子序列,想半天才發現,浪費快半小時。 雖然當初想的是回溯,結果沒有重複使用的要素,只是普通的dfs。

LeetCode 2258. Escape the Spreading Fire

雙周賽77。堪稱最近幾次Q4中最難的,排行榜前50名的人七成都噴過WA。 本來還以為我算擅長二分搜,結果兩次Q4碰到二分搜都沒有察覺,敏銳度有待加強。

LeetCode 794. Valid Tic-Tac-Toe State

好久好久以前碰過,然後沒想出來的鳥題目,結果這題竟是某次周賽的Q1,非常合理的解釋為什麼這麼多人按爛。 當次周賽的第二名在這題吃3個WA,猜他八成氣到不行。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

LeetCode 162. Find Peak Element

二分搜學習計畫。不太直覺但是很剛好可以二分搜的題目,而且因為測資很小,導致暴力法跑起來比二分搜還快。

LeetCode 1202. Smallest String With Swaps

每日題。好久沒有在每日題出現併查集,我也好一段時間沒寫過相關題,且這篇是我第一篇寫的並查集題解! 雖然說是併查集題,但我今天是先用dfs把它解決的。我認為一個好的題目不會被侷限於單一一種解法,可能因為大多數人都如此覺得,這題的讚數才會破兩千。

LeetCode 2251. Number of Flowers in Full Bloom

周賽290。其實很簡單的題目,只是我看到寬度10^9又有range update,就跑去搞線段樹,好不容易弄出來又TLE,沒有好好把握住這次機會。 周賽結束後改成前綴和5分鐘就寫完了,好可惜。

LeetCode 2249. Count Lattice Points Inside a Circle

周賽290。看到題目差點嚇尿,想起某次Q2挖骨董的噩夢,結果還真和那次差不多慘烈,用了錯誤方法吃兩個WA。 不過這題給python的時間限制好像很短,看到好幾個python大老拿到TLE,很生氣的上去罵官方,剛好我的解法沒有超時而已。

LeetCode 173. Binary Search Tree Iterator

每日題。已經不知道是第幾天二元搜尋樹,這題和前幾天的230. Kth Smallest Element in a BST有一點相關,這順序安排就有感受到管理團隊的用心。

LeetCode 99. Recover Binary Search Tree

每日題。又是二分搜尋樹,follow up還要求O(1)空間解法,結果人有爆氣說沒必要反芻五十年前的垃圾演算法,有夠好笑。

LeetCode 172. Factorial Trailing Zeroes

跟2245. Maximum Trailing Zeros in a Cornered Path有點關係。 很久以前理應看過這題,八成是因為沒什麼想法就略過不管,沒想到那時欠下的債竟在比賽的時候被催繳,太苦了。

LeetCode 2245. Maximum Trailing Zeros in a Cornered Path

周賽289。本來寫得挺流暢,直到碰到這垃圾題,搞將近一小時才想到核心概念,但是來不及寫出來。 後來自己找時間寫,也差不多敲了20分鐘才把BUG處理完,敲完50行手差點沒斷掉,要說這題是hard應該很多人都同意。 更誇張的是史帝芬大神用numpy寫出7行版本,有夠誇張。

LeetCode 1507. Reformat Date

意外看到某位大神的周賽講解影片,想說自己來做做看。要是我碰到這題八成會被氣死。

LeetCode 2234. Maximum Total Beauty of the Gardens

周賽288。大多數人都是二分搜解法,我雖然也有嘗試二分搜,不過是搜所有花園最低值上限,之後從上限開始往下爆搜,效率太差。 想了兩天總算稍微理解別人的答案。

LeetCode 441. Arranging Coins

最近幾天在玩二分搜學習計畫,才想著這題應該會出現,今天果然碰上了。 這題按爛的人還不少,不知道是不是把問題想得太複雜,明明暴力法也可以過。

LeetCode 2223. Sum of Scores of Built Strings

雙周賽75。 題目要的是longest common prefix,總覺得和KMP的longest prefix suffix有八成像,但是沒有成功做出來。後來才知道出題者想考z-function。

LeetCode 729. My Calendar I

用牛刀殺雞,最後還變成電宰場了。 從最初的的暴力法不斷進化,到sorted list(有序串列?),又到二分搜尋樹,最後是動態開點線段樹。

LeetCode 699. Falling Squares

普通線段樹一樣沒辦法過的超大測資,動態開點順利解決。 後來看提示才知道出題者想考的是座標壓縮+普通的線段樹。沒錯,動態開點就是這麼任性。

LeetCode 2227. Encrypt and Decrypt Strings

周賽287。第二次全通,雖然MLE、TLE、WA各一次。 開始做的時候就看到AC人數高得誇張,想說暴力法該不會能過,結果不行。後來改成字典樹剪枝才AC。 後來聽說C++可以用暴力法直接過,感覺個語言的執行限制不是很公平。

LeetCode 2213. Longest Substring of One Repeating Character

周賽285沒做出來的。只有140個人通過,超級噁心。看一堆人都是用線段樹來解,但是我好像比較能夠接受sorted list。 突然想起以前上課時,老師問到java有沒有sorted list?那時我還心想要這種東西幹嘛。果然太天真了。

LeetCode 2217. Find Palindrome With Fixed Length

周賽286。看到回文真是又驚又喜,數不清我曾經被他害死幾次。這題要推算的東西有夠多,好險有成功算出來。 然後範例竟然還有打錯,只是錯得太明顯,應該大部分人都有發現。

LeetCode 143. Reorder List

今天帶臭狗去照心臟超音波,打了利尿劑,結果把我褲子全都尿濕了。

LeetCode 31. Next Permutation

半年以前看了果斷跳過的題。今天做556題才發現是同個道理嗎,有如醍醐灌頂。

LeetCode 763. Partition Labels

每日題。 原來以前寫過兩次,但那都是看著解答之後照做的,沒有完全理解。這次靠著自己寫出來,還能夠正確的描述邏輯,確定自己是有在進步的。

LeetCode 28. Implement strStr()

以前用暴力法可以過,最近加了新測資,舊方法就失效了。只能稍微用些奧步或是更有效率的演算法。

LeetCode 138. Copy List with Random Pointer

每日題。 還滿有趣的題目,大部分人都是使用space-time O(N)解法,沒想到竟然會出現space O(1)解法,敬佩不已。晚點深入研究。

LeetCode 365. Water and Jug Problem

臭狗今天食慾超級好,晚上吃了1.5罐頭、一堆雞胸肉、地瓜葉、壽桃、快半碗飯,不給吃還不行,一直亂叫。

LeetCode 1232. Check If It Is a Straight Line

Study Plan - Programming Skills。 小小抒發一下,討論區的解答清一色都是同時檢查三點斜率的公式: (y - y1) / (x - x1) = (y1 - y0) / (x1 - x0)

LeetCode 1020. Number of Enclaves

Study Plan - Graph Theory。 這套題前面都是這種小島題,就算只要稍微改程式碼還是覺得有點無聊。

LeetCode 148. Sort List

每日題,難度上下限很大,依據作法不同要說是easy或hard都可以。

LeetCode 133. Clone Graph

每日題。很久以前做過,但今天才發現討論版有人吵說題目描述很爛,看來是以前的測資爛得糟糕,但現在版本沒有問題。

LeetCode 931. Minimum Falling Path Sum

DP教學系列。總覺得這些計數型DP應該放到教學前半段,畢竟相對容易理解,不然前面的題目有些太噁心了。

LeetCode 78. Subsets

每日題。突然發現沒有寫過回溯法的題解,今天剛好碰上。 題外話,jekyll碰到大括號會解釋成luquid造成爆炸,直接換成全形好了。

LeetCode 62. Unique Paths

DP教學系列。這種算路徑的都比較直觀,可以輕鬆的找出bottom-up解。

LeetCode 322. Coin Change

DP教學系列。經典中的經典,似乎是幾年前首次接觸DP時碰到的。

LeetCode 740. Delete and Earn

趁著DP教學最近免費,把裡面的題目也刷一刷,也練習照著思考框架寫題解。

LeetCode 525. Contiguous Array

買了個小遊戲Vampire Survivors,怎這會這麼好玩,尤其是開寶箱的音效歡樂到一個不行。

LeetCode 454. 4Sum II

題目 輸入四個長度為N的整數陣列,求滿足nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0的組合(i, j, k, l)有幾種。

LeetCode 886. Possible Bipartition

題目 有n個人,輸入dislikes陣列,表示a討厭b,不想跟對方在一起,求是否有辦法把所有人成功分為兩組。

LeetCode 741. Cherry Pickup

題目 N*N的矩陣,0表示空格位,1表示櫻桃,-1是障礙不可過。 先從左上角出發,只能往下或是往右走,到達右下角後,再走回起點,只能往左或往上。 每顆櫻桃只能拿一次,求最多可收集多少櫻桃。

LeetCode 1510. Stone Game IV

Stone Game系列使我想起某次競賽的慘況,AC率只有10%,好險這題沒那麼刁鑽。拜託Alice和Bob玩點簡單的遊戲吧!

LeetCode 1463. Cherry Pickup II

題目 給一個矩陣,每格的值代表櫻桃數量,有兩個機器人分別從左上、右上角出發,求最多可以拿到多少櫻桃。 機器人每次移動只能往左下、正下或是右下移動。

LeetCode 605. Can Place Flowers

好多做過的題目經過一段時間就忘記了,回顧提交紀錄還搞不懂自己怎麼寫出來的解法,希望以此加強印象,也分享給需要的朋友。

Back to top ↑

Array

LeetCode 3187. Peaks in Array

周賽 402。又是線段樹題,這次我有把樹搞出來,但是題目查詢的地方沒想通,又繞了大遠路去搞 sorted list。 除了思路有點障礙之外,寫得還很醜,真的差點沒寫出來。

LeetCode 3171. Find Subarray With Bitwise AND Closest to K

周賽 400。更新答案少寫一行,虧一個 WA,好慘。 LC 官方最近宣布使用先進的作弊檢查計數,嚴格禁止任何作弊行為,不知道效果如何。 唯一確定的是這場伺服器有點問題,希望別又在我上分的時候 unrate。

LeetCode 3108. Minimum Cost Walk in Weighted Graph

周賽 392。這題也有點問題,沒講清楚起點和終點相同要怎樣,只能猜 -1 或是 0。 前一百名內有 8X 人都猜錯了,笑死。至少錯一次後就知道答案,沒有隱藏測資很良心了。

LeetCode 3086. Minimum Moves to Pick K Ones

周賽 389。基本上是以前出過題目的大補包,道理我都懂,但就是一直寫錯。 前綴和求距離和這東西好像是第四次考,該替他準備模板了。 相似題:

LeetCode 3047. Find the Largest Area of Square Inside Two Rectangles

周賽386。我真的是被這題搞死了,寫半天還錯好多次,剩下時間還不夠做 Q3。應該會破最低名次紀錄,最近幾場周賽打的分全沒了。 上次 3027. find the number of ways to place people ii 也是,看來我的腦子碰到座標系相關的題都會大爆炸。

LeetCode 2983. Palindrome Rearrangement Queries

周賽378。有夠臭長的模擬題,非常多細節要考慮。 雖然說不需要什麼高級的DSA,但要在一小時內寫出來還挺難的,我用python也寫了一小時多。

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2958. Length of Longest Subarray With at Most K Frequency

雙周賽119。非常簡單,但是測資好像有點爭議。 題目保證了1 <= k <= nums.length,但聽說有好幾筆測資出現大於nums長度的k,害某些人噴錯。 可能有人拿k和len(nums)取最小值,反而被這個爛東西坑了。

LeetCode 2940. Find Building Where Alice and Bob Can Meet

周賽372。前陣子在整理線段樹模板,剛好練習到相似題2286. booking concert tickets in groups。 樹是有成功搞出來,但是誤會題目的要求,有些小問題會算出錯誤答案,好可惜。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2924. Find Champion II

周賽370。剛開始想成拓樸排序,想說Q2怎麼會出這種,還真不好做。當然是有更簡單的方法。

LeetCode 2923. Find Champion I

周賽370。這題有點腦筋急轉彎,害我卡了一陣子。 然後網站伺服器也在卡,中國站卻沒事,只能說中國站各方面(可用性、題庫、價格)都做得比本站好。

LeetCode 2906. Construct Product Matrix

周賽367。這題可有趣了,根據不同方法,實作的難度和程式碼量有著天大的差異。 這種沒有hard的手速場還是穩穩地寫,沒出BUG才不會排名炸裂。

LeetCode 2901. Longest Unequal Adjacent Groups Subsequence II

雙周賽115。最近好幾次都是題目內容完全一樣,只改測資範圍就當成兩題,所以有人都做第二題然後去前面貼一樣的code。 結果這次好了,內容有差異,答案邏輯還完全不一樣,騙到不少人。

LeetCode 2846. Minimum Edge Weight Equilibrium Queries in a Tree

周賽361。上週才考過倍增,這週馬上就考進階用法,真變態。 雖說是進階版,但LCA倍增其實算是競賽的常見題目,網路上隨便都找得到模板可以套用。可能因此通過人數比上次還多。

LeetCode 2830. Maximize the Profit as the Salesman

周賽359。印象中哩扣上有兩題相似題,其中一個幾乎完全一樣,但是這次有四千人通過,也太扯。 相似題2008. maximum earnings from taxi,當初才一千人通過。

LeetCode 2787. Ways to Express an Integer as Sum of Powers

雙周賽109。還是dp,測資範圍很奇怪,總感覺有奇怪的地雷,害我擔心很久。 雖然我是沒有踩中,但是理論上不重複的測資只有300*5種,官方卻搞了1502組,不知道存什麼心。

LeetCode 2766. Relocate Marbles

雙周賽108。這Q2相對佛心,還保證移動來源一定有彈珠,讓不少人逃過WA,不如跟Q1交換。

LeetCode 2751. Robot Collisions

周賽351。有點像是2731. movement of robots,當初浪費一堆時間做的模擬解竟然在今天得到回報。 然後我還想到[735. Asteroid Collision]這題,基本上是一樣的東西。

LeetCode 2731. Movement of Robots

雙周賽106。這種腦筋急轉彎題真的是很垃圾,講一堆廢話結果都沒有用,每次都被這種爛題浪費時間。

LeetCode 2681. Power of Heroes

雙周賽104。這題也繞好大一圈的遠路,搞出一個沒什麼人用的解法,但好歹是過了。

LeetCode 2680. Maximum OR

雙周賽104。這題有點小難度,結果我搞出的解法和大部分人都不一樣。

LeetCode 2663. Lexicographically Smallest Beautiful String

周賽343。關鍵點都有推出來,結果實作做不出來。 但我沒發現輸入的s也是美麗的,一直在糾結索引i進位後,從i+1開始所有字串都要變回a,其實在最尾端字元+1的情況下,當非尾端的索引i進位時,i+1肯定也是進位過的。 卡在奇怪的地方上,有點難受。

LeetCode 2658. Maximum Number of Fish in a Grid

雙周賽103。這鬼題當初還標hard,一看發現根本是經典題,真是騙很大。今天寫題解發現被打回medium。 順帶一題,這題正是字面意思的竭澤而漁。

LeetCode 2614. Prime In Diagonal

周賽339。難得Q1的數字這麼大,搞到質數篩直接TLE,太誇張了。 聽說有不少人沒有把1當成質數吃了WA。說起來我的模板也沒有判斷到這點,趕緊去更新。

LeetCode 2608. Shortest Cycle in a Graph

雙周賽101。我一直卡在不知道如何處理奇數環和偶數環。正確應該在入佇列之前就判斷環,而不是進去後才判斷,有夠尷尬。 最近官方水準越來越垃圾,不抓作弊就算了,還直接這種google名稱就可以找到答案的題目,直接冒出兩三千個作弊哥貼答案,誠實的同學們真的被打個半死。

LeetCode 2603. Collect Coins in a Tree

周賽338。網站卡了40幾分鐘,做完前面三題根本沒時間看,連題目都沒看懂就結束了。不過我倒有猜到是拓樸排序。

LeetCode 2581. Count Number of Possible Root Nodes

雙周賽99。不小心開了10^5*10^5的陣列,結果不噴MLE而是TLE。我想了半天不理解為什麼O(N)解不會過,後來才發現是被陣列初始化時間卡死,太智障了。

LeetCode 2547. Minimum Cost to Split an Array

周賽329。靠python有時候真的很吃運氣,明明複雜度是對的,可是就是會TLE。比賽當時優化了兩次才AC。 後來再把TLE的程式碼交一次,竟然又AC了,莫名其妙。

LeetCode 2536. Increment Submatrices by One

周賽328。這題有點微妙,以前在Q2用了2D前綴和,後來才發現只需要暴力法,總覺得這次也要暴力。 結果看到測資範圍發現不對,但又想不到什麼太好的方法,無法確定會不會TLE。

LeetCode 2483. Minimum Penalty for a Shop

雙周賽92。這題和我的相性不太好,長度N的陣列對應到N+1種選擇,花了一點時間才想通。 再加上字元的”N”和我用來計算輸入常數的N衝突,想變數名稱卡好久,最後選了小寫n, y來計算字元”N”, “Y”感覺很不舒服。

LeetCode 2470. Number of Subarrays With LCM Equal to K

周賽319。相似題2447. number of subarrays with gcd equal to k。 比賽時忘記python內建有lcm函數,自己寫了奇怪的判斷有通過,後來被rejudge掉,真是死的莫名其妙。

LeetCode 2456. Most Popular Video Creator

周賽317。又是臭長題,我竟然沒出錯,給自己一個肯定。感覺這種很囉唆的題目還是乖乖拆成多個步驟來解比較好,為了省字數而拿到WA得不償失。

LeetCode 2454. Next Greater Element IV

雙周賽90。眼殘到不行,明明範例一和我的答案不同,還是交了出去,好冤枉的WA。即使總共吃了4個BUG,還是拿到600名,也不算太差。

LeetCode 2453. Destroy Sequential Targets

雙周賽90。之前看人家寫貪心題都可以壓成one loop,感覺很帥就試試看,結果寫錯拿一個WA。我看以後還是乖乖拆成多個步驟。

LeetCode 2451. Odd String Difference

雙周賽90。提交的時候本來要用ctrl+/快捷鍵註解掉測試用的輸出,結果ctrl鬆掉只打出一個斜線,得到RE。

LeetCode 2421. Number of Good Paths

周賽312。真的是吐血了,寫一半有人打電話來,寫出一坨狗屎code,分心狀況下根本沒辦法debug。後來才發現我把for寫成if,整題就毀了,好慘。

LeetCode 393. UTF-8 Validation

每日題。超多人點爛,可能是題目描述不太清楚的關係。雖然一開始我也覺得是垃圾題,但看到最佳解後覺得非常漂亮。

LeetCode 2407. Longest Increasing Subsequence II

周賽310。每次python寫線段樹都很痛苦,很容易出bug就算了,還常常超時。明明就是正確的複雜度還是TLE,嘔氣到不行。 比賽結束後我自己又拿當時TLE的程式碼再交一次,竟然就過了(????),真的氣氣氣氣,還我300名來。

LeetCode 2402. Meeting Rooms III

周賽309。相似題1606. find servers that handled most number of requests。沒有排序吃一個WA,好慘。

LeetCode 2398. Maximum Number of Robots Within Budget

雙周賽86。一開始想到了單調堆疊來找到各個chargeTimes[i]的左右邊界,後來發現是錯的。 後來及時想到二分搜+滑動窗口,但是二分搜寫到一半突然開竅:直接滑動不就得了嗎?

LeetCode 2392. Build a Matrix With Conditions

周賽308。其實算是很簡單的Q4,但我沒看出來是拓樸排序,在那邊貪心半天。賽後看到知道是拓樸排序就馬上寫出來了,好冤。

LeetCode 2381. Shifting Letters II

雙周賽85。第一眼覺得是線段樹,冷靜想想線段樹不應該出現在Q3才對。 其實是因為我沒有存範圍修改的線段樹模板。

LeetCode 2379. Minimum Recolors to Get K Consecutive Black Blocks

雙周賽85。老實說看到這題有嚇到,一時想不到怎麼暴力解,難道Q1就要求滑動窗口?感覺這次比賽有點可怕。 雖然後來確定能用暴力解,但是討論區有人說做出Q4確做不出這題,有點誇張。

LeetCode 46. Permutations

LC75學習計畫。以前大一考試碰到的題目,那時候根本什麼都不會,根本是難度超標。考完試後才去查到一個比較偏門的解法,但沒有真正搞懂。今天重新思考了一次,原來是如此的經典。

LeetCode 2370. Longest Ideal Subsequence

周賽305。第一次看到Q4是medium,但我卻一點頭緒都沒有。賽後才知道這題也是DP,當下心情真的糟到一個不行。 難得Q3和Q4都是理應擅長的DP,結果兩題都沒發現,真的該好好反省。

LeetCode 916. Word Subsets

每日題。其他語言都要寫一長串,就只有python寫起來特別簡單,而且還可以簡化到非常誇張的程度。

LeetCode 621. Task Scheduler

LC75學習計畫。這題雖然有heap標籤,和我一開始的想法相同,要應用起來卻很麻煩,最後選擇完全不同的方法。

LeetCode 2350. Shortest Impossible Sequence of Rolls

雙周賽83。超級腦筋急轉彎,總覺得有O(N)解法,但就是想不出來。 說起來leetcode官方也是誇張,有人直播洩題4次都沒被懲處,所謂的作弊零容忍根本是笑話,看看就好。

LeetCode 1696. Jump Game VI

每日題。明明以前寫過,但是卻想不起來。看來我跟單調佇列還是不夠熟。

LeetCode 135. Candy

每日題。依照小朋友的分數來發糖果,同樣分數拿到不同數量的糖果沒關係,但是比低分的人一定不行拿更多,其實也不是很公平。

LeetCode 2326. Spiral Matrix IV

周賽300。看到Spiral Matrix就想說完蛋,這系列都很麻煩,結果還真的卡了我十分鐘debug。

LeetCode 665. Non-decreasing Array

每日題。好久好久以前做過,但是沒真正搞懂。今天還是錯了一模一樣的測資,但是好在馬上就能想通錯在哪,也是一種進步。

LeetCode 2312. Selling Pieces of Wood

周賽298。雖然知道是DP但不知道怎麼切塊,想了半天想不出,好苦。 雖然官方標籤有個回溯,但我還真沒看到有人用回溯解法。

LeetCode 2306. Naming a Company

周賽297。當時想到了以前綴、後綴分組,但就是沒想到用集合做運算,只通過74/89測資。

LeetCode 120. Triangle

每日題。這題如果按照題意往下走會很麻煩,換個方向會簡單非常多。

LeetCode 2293. Min Max Game

周賽296。模擬題,幸好腦筋轉得快,似乎不少人糾結在怎麼找規律而卡很久。

LeetCode 90. Subsets II

複習回溯經典題,發現我以前竟然偷懶,全都用set去重複,沒有一次自己剪枝的。

LeetCode 2179. Count Good Triplets in an Array

模擬雙周賽72。一開始還真是完全摸不著頭緒,看了滿多篇解答,不是解釋不清楚,就是刻意寫得很艱深,連集合論的bijection都拿出來講,好險最後是有看到幾篇正常的。

LeetCode 2261. K Divisible Elements Subarrays

周賽291。把子陣列看成子序列,想半天才發現,浪費快半小時。 雖然當初想的是回溯,結果沒有重複使用的要素,只是普通的dfs。

LeetCode 2258. Escape the Spreading Fire

雙周賽77。堪稱最近幾次Q4中最難的,排行榜前50名的人七成都噴過WA。 本來還以為我算擅長二分搜,結果兩次Q4碰到二分搜都沒有察覺,敏銳度有待加強。

LeetCode 794. Valid Tic-Tac-Toe State

好久好久以前碰過,然後沒想出來的鳥題目,結果這題竟是某次周賽的Q1,非常合理的解釋為什麼這麼多人按爛。 當次周賽的第二名在這題吃3個WA,猜他八成氣到不行。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

LeetCode 162. Find Peak Element

二分搜學習計畫。不太直覺但是很剛好可以二分搜的題目,而且因為測資很小,導致暴力法跑起來比二分搜還快。

LeetCode 1202. Smallest String With Swaps

每日題。好久沒有在每日題出現併查集,我也好一段時間沒寫過相關題,且這篇是我第一篇寫的並查集題解! 雖然說是併查集題,但我今天是先用dfs把它解決的。我認為一個好的題目不會被侷限於單一一種解法,可能因為大多數人都如此覺得,這題的讚數才會破兩千。

LeetCode 2251. Number of Flowers in Full Bloom

周賽290。其實很簡單的題目,只是我看到寬度10^9又有range update,就跑去搞線段樹,好不容易弄出來又TLE,沒有好好把握住這次機會。 周賽結束後改成前綴和5分鐘就寫完了,好可惜。

LeetCode 2249. Count Lattice Points Inside a Circle

周賽290。看到題目差點嚇尿,想起某次Q2挖骨董的噩夢,結果還真和那次差不多慘烈,用了錯誤方法吃兩個WA。 不過這題給python的時間限制好像很短,看到好幾個python大老拿到TLE,很生氣的上去罵官方,剛好我的解法沒有超時而已。

LeetCode 699. Falling Squares

普通線段樹一樣沒辦法過的超大測資,動態開點順利解決。 後來看提示才知道出題者想考的是座標壓縮+普通的線段樹。沒錯,動態開點就是這麼任性。

LeetCode 1232. Check If It Is a Straight Line

Study Plan - Programming Skills。 小小抒發一下,討論區的解答清一色都是同時檢查三點斜率的公式: (y - y1) / (x - x1) = (y1 - y0) / (x1 - x0)

LeetCode 931. Minimum Falling Path Sum

DP教學系列。總覺得這些計數型DP應該放到教學前半段,畢竟相對容易理解,不然前面的題目有些太噁心了。

LeetCode 78. Subsets

每日題。突然發現沒有寫過回溯法的題解,今天剛好碰上。 題外話,jekyll碰到大括號會解釋成luquid造成爆炸,直接換成全形好了。

Back to top ↑

Medium

LeetCode 3138. Minimum Length of Anagram Concatenation

周賽 396。又是超級爛的題目描述,不管 LCUS 原文或是 LCCN 的翻譯都很爛,不知道在搞什麼。 描述偷改過了,原本好像是講: typically using all the original letters exactly once

LeetCode 3047. Find the Largest Area of Square Inside Two Rectangles

周賽386。我真的是被這題搞死了,寫半天還錯好多次,剩下時間還不夠做 Q3。應該會破最低名次紀錄,最近幾場周賽打的分全沒了。 上次 3027. find the number of ways to place people ii 也是,看來我的腦子碰到座標系相關的題都會大爆炸。

LeetCode 3001. Minimum Moves to Capture The Queen

周賽379。又打錯變數名稱,再喜提一隻BUG。 這種囉嗦的分類討論,一次寫出正確邏輯還是挺高興的。結果碰到打錯字這種低能錯誤,心情複雜。 而且我不會玩西洋棋。

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2958. Length of Longest Subarray With at Most K Frequency

雙周賽119。非常簡單,但是測資好像有點爭議。 題目保證了1 <= k <= nums.length,但聽說有好幾筆測資出現大於nums長度的k,害某些人噴錯。 可能有人拿k和len(nums)取最小值,反而被這個爛東西坑了。

LeetCode 2924. Find Champion II

周賽370。剛開始想成拓樸排序,想說Q2怎麼會出這種,還真不好做。當然是有更簡單的方法。

LeetCode 2906. Construct Product Matrix

周賽367。這題可有趣了,根據不同方法,實作的難度和程式碼量有著天大的差異。 這種沒有hard的手速場還是穩穩地寫,沒出BUG才不會排名炸裂。

LeetCode 2901. Longest Unequal Adjacent Groups Subsequence II

雙周賽115。最近好幾次都是題目內容完全一樣,只改測資範圍就當成兩題,所以有人都做第二題然後去前面貼一樣的code。 結果這次好了,內容有差異,答案邏輯還完全不一樣,騙到不少人。

LeetCode 2830. Maximize the Profit as the Salesman

周賽359。印象中哩扣上有兩題相似題,其中一個幾乎完全一樣,但是這次有四千人通過,也太扯。 相似題2008. maximum earnings from taxi,當初才一千人通過。

LeetCode 2787. Ways to Express an Integer as Sum of Powers

雙周賽109。還是dp,測資範圍很奇怪,總感覺有奇怪的地雷,害我擔心很久。 雖然我是沒有踩中,但是理論上不重複的測資只有300*5種,官方卻搞了1502組,不知道存什麼心。

LeetCode 2766. Relocate Marbles

雙周賽108。這Q2相對佛心,還保證移動來源一定有彈珠,讓不少人逃過WA,不如跟Q1交換。

LeetCode 2731. Movement of Robots

雙周賽106。這種腦筋急轉彎題真的是很垃圾,講一堆廢話結果都沒有用,每次都被這種爛題浪費時間。

LeetCode 2680. Maximum OR

雙周賽104。這題有點小難度,結果我搞出的解法和大部分人都不一樣。

LeetCode 2658. Maximum Number of Fish in a Grid

雙周賽103。這鬼題當初還標hard,一看發現根本是經典題,真是騙很大。今天寫題解發現被打回medium。 順帶一題,這題正是字面意思的竭澤而漁。

LeetCode 2536. Increment Submatrices by One

周賽328。這題有點微妙,以前在Q2用了2D前綴和,後來才發現只需要暴力法,總覺得這次也要暴力。 結果看到測資範圍發現不對,但又想不到什麼太好的方法,無法確定會不會TLE。

LeetCode 2483. Minimum Penalty for a Shop

雙周賽92。這題和我的相性不太好,長度N的陣列對應到N+1種選擇,花了一點時間才想通。 再加上字元的”N”和我用來計算輸入常數的N衝突,想變數名稱卡好久,最後選了小寫n, y來計算字元”N”, “Y”感覺很不舒服。

LeetCode 2470. Number of Subarrays With LCM Equal to K

周賽319。相似題2447. number of subarrays with gcd equal to k。 比賽時忘記python內建有lcm函數,自己寫了奇怪的判斷有通過,後來被rejudge掉,真是死的莫名其妙。

LeetCode 2456. Most Popular Video Creator

周賽317。又是臭長題,我竟然沒出錯,給自己一個肯定。感覺這種很囉唆的題目還是乖乖拆成多個步驟來解比較好,為了省字數而拿到WA得不償失。

LeetCode 2453. Destroy Sequential Targets

雙周賽90。之前看人家寫貪心題都可以壓成one loop,感覺很帥就試試看,結果寫錯拿一個WA。我看以後還是乖乖拆成多個步驟。

LeetCode 89. Gray Code

今天每日題的原題,當初碰到也覺得很奇妙,比較需要特別記住這個東西。

LeetCode 146. LRU Cache

面試常考題,終於找到時間來做個詳解。 中文叫做最近最不常使用快取,但是常使用是指使用次數還是使用時間?要記住LRU重點是上次的使用時間,把最久沒用的踢出去。 乾脆叫他太久沒上會被踢快取。

LeetCode 393. UTF-8 Validation

每日題。超多人點爛,可能是題目描述不太清楚的關係。雖然一開始我也覺得是垃圾題,但看到最佳解後覺得非常漂亮。

LeetCode 2381. Shifting Letters II

雙周賽85。第一眼覺得是線段樹,冷靜想想線段樹不應該出現在Q3才對。 其實是因為我沒有存範圍修改的線段樹模板。

LeetCode 46. Permutations

LC75學習計畫。以前大一考試碰到的題目,那時候根本什麼都不會,根本是難度超標。考完試後才去查到一個比較偏門的解法,但沒有真正搞懂。今天重新思考了一次,原來是如此的經典。

LeetCode 2370. Longest Ideal Subsequence

周賽305。第一次看到Q4是medium,但我卻一點頭緒都沒有。賽後才知道這題也是DP,當下心情真的糟到一個不行。 難得Q3和Q4都是理應擅長的DP,結果兩題都沒發現,真的該好好反省。

LeetCode 858. Mirror Reflection

每日題。寫起來不是很舒服的題,早上本來看到900個爛,現在已經1300了。倒是沒想到暴力模擬也能過就是了。

LeetCode 916. Word Subsets

每日題。其他語言都要寫一長串,就只有python寫起來特別簡單,而且還可以簡化到非常誇張的程度。

LeetCode 621. Task Scheduler

LC75學習計畫。這題雖然有heap標籤,和我一開始的想法相同,要應用起來卻很麻煩,最後選擇完全不同的方法。

LeetCode 86. Partition List

每日題。又是linked list,但沒有昨天的那麼麻煩。今天寫出來的code跟之前幾乎完全相同,差在變數名不同而已,真神奇。

LeetCode 1696. Jump Game VI

每日題。明明以前寫過,但是卻想不起來。看來我跟單調佇列還是不夠熟。

LeetCode 97. Interleaving String

每日題。好久以前就看過這題,但是想不出bottom up解法,感覺很麻煩就沒碰。沒想到今天腦子不太對勁,用top down一次就過了。

LeetCode 2326. Spiral Matrix IV

周賽300。看到Spiral Matrix就想說完蛋,這系列都很麻煩,結果還真的卡了我十分鐘debug。

LeetCode 665. Non-decreasing Array

每日題。好久好久以前做過,但是沒真正搞懂。今天還是錯了一模一樣的測資,但是好在馬上就能想通錯在哪,也是一種進步。

LeetCode 120. Triangle

每日題。這題如果按照題意往下走會很麻煩,換個方向會簡單非常多。

LeetCode 29. Divide Two Integers

每日題。這題從好久以前就看過了,沒什麼想法,而且還超多爛,就沒想碰他。竟然出現在每日題,看來會增加更多爛。

LeetCode 464. Can I Win

隨便抽的一題,感覺最後的測資有點沒意思,故意放來卡人家WA的。

LeetCode 90. Subsets II

複習回溯經典題,發現我以前竟然偷懶,全都用set去重複,沒有一次自己剪枝的。

LeetCode 2178. Maximum Split of Positive Even Integers

模擬雙周賽72。回想起來,當時練習的時候是5/7晚上10點左右,結果網站竟然炸掉快半小時!當時還想說:明天周賽最好不要給我出事,然後就真的出事了。

LeetCode 790. Domino and Tromino Tiling

推理型DP,第一次碰到的時候是每日題,那時我直接印出所有測資找出公式解,但沒有實際理解怎麼推導的。今天特地來補課,發現還真有點難度。

LeetCode 2261. K Divisible Elements Subarrays

周賽291。把子陣列看成子序列,想半天才發現,浪費快半小時。 雖然當初想的是回溯,結果沒有重複使用的要素,只是普通的dfs。

LeetCode 794. Valid Tic-Tac-Toe State

好久好久以前碰過,然後沒想出來的鳥題目,結果這題竟是某次周賽的Q1,非常合理的解釋為什麼這麼多人按爛。 當次周賽的第二名在這題吃3個WA,猜他八成氣到不行。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

LeetCode 162. Find Peak Element

二分搜學習計畫。不太直覺但是很剛好可以二分搜的題目,而且因為測資很小,導致暴力法跑起來比二分搜還快。

LeetCode 1202. Smallest String With Swaps

每日題。好久沒有在每日題出現併查集,我也好一段時間沒寫過相關題,且這篇是我第一篇寫的並查集題解! 雖然說是併查集題,但我今天是先用dfs把它解決的。我認為一個好的題目不會被侷限於單一一種解法,可能因為大多數人都如此覺得,這題的讚數才會破兩千。

LeetCode 2249. Count Lattice Points Inside a Circle

周賽290。看到題目差點嚇尿,想起某次Q2挖骨董的噩夢,結果還真和那次差不多慘烈,用了錯誤方法吃兩個WA。 不過這題給python的時間限制好像很短,看到好幾個python大老拿到TLE,很生氣的上去罵官方,剛好我的解法沒有超時而已。

LeetCode 173. Binary Search Tree Iterator

每日題。已經不知道是第幾天二元搜尋樹,這題和前幾天的230. Kth Smallest Element in a BST有一點相關,這順序安排就有感受到管理團隊的用心。

LeetCode 99. Recover Binary Search Tree

每日題。又是二分搜尋樹,follow up還要求O(1)空間解法,結果人有爆氣說沒必要反芻五十年前的垃圾演算法,有夠好笑。

LeetCode 172. Factorial Trailing Zeroes

跟2245. Maximum Trailing Zeros in a Cornered Path有點關係。 很久以前理應看過這題,八成是因為沒什麼想法就略過不管,沒想到那時欠下的債竟在比賽的時候被催繳,太苦了。

LeetCode 2245. Maximum Trailing Zeros in a Cornered Path

周賽289。本來寫得挺流暢,直到碰到這垃圾題,搞將近一小時才想到核心概念,但是來不及寫出來。 後來自己找時間寫,也差不多敲了20分鐘才把BUG處理完,敲完50行手差點沒斷掉,要說這題是hard應該很多人都同意。 更誇張的是史帝芬大神用numpy寫出7行版本,有夠誇張。

LeetCode 729. My Calendar I

用牛刀殺雞,最後還變成電宰場了。 從最初的的暴力法不斷進化,到sorted list(有序串列?),又到二分搜尋樹,最後是動態開點線段樹。

LeetCode 2217. Find Palindrome With Fixed Length

周賽286。看到回文真是又驚又喜,數不清我曾經被他害死幾次。這題要推算的東西有夠多,好險有成功算出來。 然後範例竟然還有打錯,只是錯得太明顯,應該大部分人都有發現。

LeetCode 143. Reorder List

今天帶臭狗去照心臟超音波,打了利尿劑,結果把我褲子全都尿濕了。

LeetCode 31. Next Permutation

半年以前看了果斷跳過的題。今天做556題才發現是同個道理嗎,有如醍醐灌頂。

LeetCode 763. Partition Labels

每日題。 原來以前寫過兩次,但那都是看著解答之後照做的,沒有完全理解。這次靠著自己寫出來,還能夠正確的描述邏輯,確定自己是有在進步的。

LeetCode 138. Copy List with Random Pointer

每日題。 還滿有趣的題目,大部分人都是使用space-time O(N)解法,沒想到竟然會出現space O(1)解法,敬佩不已。晚點深入研究。

LeetCode 365. Water and Jug Problem

臭狗今天食慾超級好,晚上吃了1.5罐頭、一堆雞胸肉、地瓜葉、壽桃、快半碗飯,不給吃還不行,一直亂叫。

LeetCode 1020. Number of Enclaves

Study Plan - Graph Theory。 這套題前面都是這種小島題,就算只要稍微改程式碼還是覺得有點無聊。

LeetCode 148. Sort List

每日題,難度上下限很大,依據作法不同要說是easy或hard都可以。

LeetCode 133. Clone Graph

每日題。很久以前做過,但今天才發現討論版有人吵說題目描述很爛,看來是以前的測資爛得糟糕,但現在版本沒有問題。

LeetCode 931. Minimum Falling Path Sum

DP教學系列。總覺得這些計數型DP應該放到教學前半段,畢竟相對容易理解,不然前面的題目有些太噁心了。

LeetCode 78. Subsets

每日題。突然發現沒有寫過回溯法的題解,今天剛好碰上。 題外話,jekyll碰到大括號會解釋成luquid造成爆炸,直接換成全形好了。

LeetCode 62. Unique Paths

DP教學系列。這種算路徑的都比較直觀,可以輕鬆的找出bottom-up解。

LeetCode 322. Coin Change

DP教學系列。經典中的經典,似乎是幾年前首次接觸DP時碰到的。

LeetCode 740. Delete and Earn

趁著DP教學最近免費,把裡面的題目也刷一刷,也練習照著思考框架寫題解。

LeetCode 525. Contiguous Array

買了個小遊戲Vampire Survivors,怎這會這麼好玩,尤其是開寶箱的音效歡樂到一個不行。

LeetCode 454. 4Sum II

題目 輸入四個長度為N的整數陣列,求滿足nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0的組合(i, j, k, l)有幾種。

LeetCode 886. Possible Bipartition

題目 有n個人,輸入dislikes陣列,表示a討厭b,不想跟對方在一起,求是否有辦法把所有人成功分為兩組。

Back to top ↑

Hard

LeetCode 3187. Peaks in Array

周賽 402。又是線段樹題,這次我有把樹搞出來,但是題目查詢的地方沒想通,又繞了大遠路去搞 sorted list。 除了思路有點障礙之外,寫得還很醜,真的差點沒寫出來。

LeetCode 3171. Find Subarray With Bitwise AND Closest to K

周賽 400。更新答案少寫一行,虧一個 WA,好慘。 LC 官方最近宣布使用先進的作弊檢查計數,嚴格禁止任何作弊行為,不知道效果如何。 唯一確定的是這場伺服器有點問題,希望別又在我上分的時候 unrate。

LeetCode 3108. Minimum Cost Walk in Weighted Graph

周賽 392。這題也有點問題,沒講清楚起點和終點相同要怎樣,只能猜 -1 或是 0。 前一百名內有 8X 人都猜錯了,笑死。至少錯一次後就知道答案,沒有隱藏測資很良心了。

LeetCode 3086. Minimum Moves to Pick K Ones

周賽 389。基本上是以前出過題目的大補包,道理我都懂,但就是一直寫錯。 前綴和求距離和這東西好像是第四次考,該替他準備模板了。 相似題:

LeetCode 2983. Palindrome Rearrangement Queries

周賽378。有夠臭長的模擬題,非常多細節要考慮。 雖然說不需要什麼高級的DSA,但要在一小時內寫出來還挺難的,我用python也寫了一小時多。

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2940. Find Building Where Alice and Bob Can Meet

周賽372。前陣子在整理線段樹模板,剛好練習到相似題2286. booking concert tickets in groups。 樹是有成功搞出來,但是誤會題目的要求,有些小問題會算出錯誤答案,好可惜。

LeetCode 2846. Minimum Edge Weight Equilibrium Queries in a Tree

周賽361。上週才考過倍增,這週馬上就考進階用法,真變態。 雖說是進階版,但LCA倍增其實算是競賽的常見題目,網路上隨便都找得到模板可以套用。可能因此通過人數比上次還多。

LeetCode 2751. Robot Collisions

周賽351。有點像是2731. movement of robots,當初浪費一堆時間做的模擬解竟然在今天得到回報。 然後我還想到[735. Asteroid Collision]這題,基本上是一樣的東西。

LeetCode 2681. Power of Heroes

雙周賽104。這題也繞好大一圈的遠路,搞出一個沒什麼人用的解法,但好歹是過了。

LeetCode 2663. Lexicographically Smallest Beautiful String

周賽343。關鍵點都有推出來,結果實作做不出來。 但我沒發現輸入的s也是美麗的,一直在糾結索引i進位後,從i+1開始所有字串都要變回a,其實在最尾端字元+1的情況下,當非尾端的索引i進位時,i+1肯定也是進位過的。 卡在奇怪的地方上,有點難受。

LeetCode 2608. Shortest Cycle in a Graph

雙周賽101。我一直卡在不知道如何處理奇數環和偶數環。正確應該在入佇列之前就判斷環,而不是進去後才判斷,有夠尷尬。 最近官方水準越來越垃圾,不抓作弊就算了,還直接這種google名稱就可以找到答案的題目,直接冒出兩三千個作弊哥貼答案,誠實的同學們真的被打個半死。

LeetCode 2603. Collect Coins in a Tree

周賽338。網站卡了40幾分鐘,做完前面三題根本沒時間看,連題目都沒看懂就結束了。不過我倒有猜到是拓樸排序。

LeetCode 2581. Count Number of Possible Root Nodes

雙周賽99。不小心開了10^5*10^5的陣列,結果不噴MLE而是TLE。我想了半天不理解為什麼O(N)解不會過,後來才發現是被陣列初始化時間卡死,太智障了。

LeetCode 2547. Minimum Cost to Split an Array

周賽329。靠python有時候真的很吃運氣,明明複雜度是對的,可是就是會TLE。比賽當時優化了兩次才AC。 後來再把TLE的程式碼交一次,竟然又AC了,莫名其妙。

LeetCode 2514. Count Anagrams

雙周賽94。之前看過atlassian考類似的題目,當時只想說:這誰他媽面試做得出來。沒想到兩個月內就來討債了。

LeetCode 2478. Number of Beautiful Partitions

周賽320。本來用python寫個O(k*N^2)的dp解,可能沒睡醒才覺得又是py時間太嚴格,一氣之下跑去用go寫一次就過了。後來想想才發現不對,O(k*N^2)將近10^9次運算,再怎樣都不會是正確答案,看來是golang執行快到一個誇張。

LeetCode 2454. Next Greater Element IV

雙周賽90。眼殘到不行,明明範例一和我的答案不同,還是交了出去,好冤枉的WA。即使總共吃了4個BUG,還是拿到600名,也不算太差。

LeetCode 2421. Number of Good Paths

周賽312。真的是吐血了,寫一半有人打電話來,寫出一坨狗屎code,分心狀況下根本沒辦法debug。後來才發現我把for寫成if,整題就毀了,好慘。

LeetCode 460. LFU Cache

LRU的好兄弟,打鐵趁熱一起做掉,但是花了好多時間才整理成好看的樣子。 中文叫做最少使用快取,這次真的是把使用次數最少的踢掉,有多個次數相同就踢最久沒用過那個(也就是LRU)。

LeetCode 2407. Longest Increasing Subsequence II

周賽310。每次python寫線段樹都很痛苦,很容易出bug就算了,還常常超時。明明就是正確的複雜度還是TLE,嘔氣到不行。 比賽結束後我自己又拿當時TLE的程式碼再交一次,竟然就過了(????),真的氣氣氣氣,還我300名來。

LeetCode 2402. Meeting Rooms III

周賽309。相似題1606. find servers that handled most number of requests。沒有排序吃一個WA,好慘。

LeetCode 2398. Maximum Number of Robots Within Budget

雙周賽86。一開始想到了單調堆疊來找到各個chargeTimes[i]的左右邊界,後來發現是錯的。 後來及時想到二分搜+滑動窗口,但是二分搜寫到一半突然開竅:直接滑動不就得了嗎?

LeetCode 2392. Build a Matrix With Conditions

周賽308。其實算是很簡單的Q4,但我沒看出來是拓樸排序,在那邊貪心半天。賽後看到知道是拓樸排序就馬上寫出來了,好冤。

LeetCode 2376. Count Special Integers

周賽306。這題真是傷透我心,本來看測資範圍10位數應該也是可以回溯的,很抱歉不行。但是又聽說JAVA和C++能夠通過,看來又是歧視PY。

LeetCode 458. Poor Pigs

每日題。這好像是微軟的毒老鼠面試題改版,難怪覺得眼熟眼熟。

LeetCode 2350. Shortest Impossible Sequence of Rolls

雙周賽83。超級腦筋急轉彎,總覺得有O(N)解法,但就是想不出來。 說起來leetcode官方也是誇張,有人直播洩題4次都沒被懲處,所謂的作弊零容忍根本是笑話,看看就好。

LeetCode 135. Candy

每日題。依照小朋友的分數來發糖果,同樣分數拿到不同數量的糖果沒關係,但是比低分的人一定不行拿更多,其實也不是很公平。

LeetCode 2322. Minimum Score After Removals on a Tree

周賽299。看就想到樹狀dp,但不知道怎麼表達切開的子樹。一直想著要怎麼在dfs函數上處理切割第幾刀,整個思路都是錯的。 說起來這兩次周賽都完全沒出bug,雖然都沒做出Q4,但排名還算前面,算挺開心的。

LeetCode 2312. Selling Pieces of Wood

周賽298。雖然知道是DP但不知道怎麼切塊,想了半天想不出,好苦。 雖然官方標籤有個回溯,但我還真沒看到有人用回溯解法。

LeetCode 745. Prefix and Suffix Search

每日題。好像是想考字典樹吧,結果被我偷雞偷過了。字典樹的解法很多種,但沒一種我覺得容易理解的。

LeetCode 2306. Naming a Company

周賽297。當時想到了以前綴、後綴分組,但就是沒想到用集合做運算,只通過74/89測資。

LeetCode 2296. Design a Text Editor

周賽296。有點尷尬的題目,難度不高,但我選錯資料結構差點陣亡,好在剩下最後2分鐘趕快改過來。

LeetCode 2179. Count Good Triplets in an Array

模擬雙周賽72。一開始還真是完全摸不著頭緒,看了滿多篇解答,不是解釋不清楚,就是刻意寫得很艱深,連集合論的bijection都拿出來講,好險最後是有看到幾篇正常的。

LeetCode 282. Expression Add Operators

跟今天每日題有點像,特地回來複習。但是我又開始糾結backtracking和dfs到底差在哪裡? 有一說是backtracaking在剪枝的時候會恢復上一動的狀態,以退回走過的路徑;又有一說dfs是處理顯式樹(路徑已經固定),而backtracaking處理的是隱式樹(自己找可行路徑出來)。 那麼這題符合隱式樹,...

LeetCode 2262. Total Appeal of A String

周賽291。苦思久等的DP終於來了,結果想不出轉移方程式,又是三題幫。 看到測資10^5還是不信邪的用bitmask做O(N^2),只通過62/76測資。

LeetCode 2258. Escape the Spreading Fire

雙周賽77。堪稱最近幾次Q4中最難的,排行榜前50名的人七成都噴過WA。 本來還以為我算擅長二分搜,結果兩次Q4碰到二分搜都沒有察覺,敏銳度有待加強。

LeetCode 2251. Number of Flowers in Full Bloom

周賽290。其實很簡單的題目,只是我看到寬度10^9又有range update,就跑去搞線段樹,好不容易弄出來又TLE,沒有好好把握住這次機會。 周賽結束後改成前綴和5分鐘就寫完了,好可惜。

LeetCode 2234. Maximum Total Beauty of the Gardens

周賽288。大多數人都是二分搜解法,我雖然也有嘗試二分搜,不過是搜所有花園最低值上限,之後從上限開始往下爆搜,效率太差。 想了兩天總算稍微理解別人的答案。

LeetCode 2223. Sum of Scores of Built Strings

雙周賽75。 題目要的是longest common prefix,總覺得和KMP的longest prefix suffix有八成像,但是沒有成功做出來。後來才知道出題者想考z-function。

LeetCode 699. Falling Squares

普通線段樹一樣沒辦法過的超大測資,動態開點順利解決。 後來看提示才知道出題者想考的是座標壓縮+普通的線段樹。沒錯,動態開點就是這麼任性。

LeetCode 2227. Encrypt and Decrypt Strings

周賽287。第二次全通,雖然MLE、TLE、WA各一次。 開始做的時候就看到AC人數高得誇張,想說暴力法該不會能過,結果不行。後來改成字典樹剪枝才AC。 後來聽說C++可以用暴力法直接過,感覺個語言的執行限制不是很公平。

LeetCode 2213. Longest Substring of One Repeating Character

周賽285沒做出來的。只有140個人通過,超級噁心。看一堆人都是用線段樹來解,但是我好像比較能夠接受sorted list。 突然想起以前上課時,老師問到java有沒有sorted list?那時我還心想要這種東西幹嘛。果然太天真了。

LeetCode 741. Cherry Pickup

題目 N*N的矩陣,0表示空格位,1表示櫻桃,-1是障礙不可過。 先從左上角出發,只能往下或是往右走,到達右下角後,再走回起點,只能往左或往上。 每顆櫻桃只能拿一次,求最多可收集多少櫻桃。

LeetCode 1510. Stone Game IV

Stone Game系列使我想起某次競賽的慘況,AC率只有10%,好險這題沒那麼刁鑽。拜託Alice和Bob玩點簡單的遊戲吧!

LeetCode 1463. Cherry Pickup II

題目 給一個矩陣,每格的值代表櫻桃數量,有兩個機器人分別從左上、右上角出發,求最多可以拿到多少櫻桃。 機器人每次移動只能往左下、正下或是右下移動。

Back to top ↑

HashTable

LeetCode 3171. Find Subarray With Bitwise AND Closest to K

周賽 400。更新答案少寫一行,虧一個 WA,好慘。 LC 官方最近宣布使用先進的作弊檢查計數,嚴格禁止任何作弊行為,不知道效果如何。 唯一確定的是這場伺服器有點問題,希望別又在我上分的時候 unrate。

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2958. Length of Longest Subarray With at Most K Frequency

雙周賽119。非常簡單,但是測資好像有點爭議。 題目保證了1 <= k <= nums.length,但聽說有好幾筆測資出現大於nums長度的k,害某些人噴錯。 可能有人拿k和len(nums)取最小值,反而被這個爛東西坑了。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2766. Relocate Marbles

雙周賽108。這Q2相對佛心,還保證移動來源一定有彈珠,讓不少人逃過WA,不如跟Q1交換。

LeetCode 2581. Count Number of Possible Root Nodes

雙周賽99。不小心開了10^5*10^5的陣列,結果不噴MLE而是TLE。我想了半天不理解為什麼O(N)解不會過,後來才發現是被陣列初始化時間卡死,太智障了。

LeetCode 2547. Minimum Cost to Split an Array

周賽329。靠python有時候真的很吃運氣,明明複雜度是對的,可是就是會TLE。比賽當時優化了兩次才AC。 後來再把TLE的程式碼交一次,竟然又AC了,莫名其妙。

LeetCode 2514. Count Anagrams

雙周賽94。之前看過atlassian考類似的題目,當時只想說:這誰他媽面試做得出來。沒想到兩個月內就來討債了。

LeetCode 2456. Most Popular Video Creator

周賽317。又是臭長題,我竟然沒出錯,給自己一個肯定。感覺這種很囉唆的題目還是乖乖拆成多個步驟來解比較好,為了省字數而拿到WA得不償失。

LeetCode 2454. Next Greater Element IV

雙周賽90。眼殘到不行,明明範例一和我的答案不同,還是交了出去,好冤枉的WA。即使總共吃了4個BUG,還是拿到600名,也不算太差。

LeetCode 2453. Destroy Sequential Targets

雙周賽90。之前看人家寫貪心題都可以壓成one loop,感覺很帥就試試看,結果寫錯拿一個WA。我看以後還是乖乖拆成多個步驟。

LeetCode 2451. Odd String Difference

雙周賽90。提交的時候本來要用ctrl+/快捷鍵註解掉測試用的輸出,結果ctrl鬆掉只打出一個斜線,得到RE。

LeetCode 2421. Number of Good Paths

周賽312。真的是吐血了,寫一半有人打電話來,寫出一坨狗屎code,分心狀況下根本沒辦法debug。後來才發現我把for寫成if,整題就毀了,好慘。

LeetCode 460. LFU Cache

LRU的好兄弟,打鐵趁熱一起做掉,但是花了好多時間才整理成好看的樣子。 中文叫做最少使用快取,這次真的是把使用次數最少的踢掉,有多個次數相同就踢最久沒用過那個(也就是LRU)。

LeetCode 146. LRU Cache

面試常考題,終於找到時間來做個詳解。 中文叫做最近最不常使用快取,但是常使用是指使用次數還是使用時間?要記住LRU重點是上次的使用時間,把最久沒用的踢出去。 乾脆叫他太久沒上會被踢快取。

LeetCode 2392. Build a Matrix With Conditions

周賽308。其實算是很簡單的Q4,但我沒看出來是拓樸排序,在那邊貪心半天。賽後看到知道是拓樸排序就馬上寫出來了,好冤。

LeetCode 916. Word Subsets

每日題。其他語言都要寫一長串,就只有python寫起來特別簡單,而且還可以簡化到非常誇張的程度。

LeetCode 621. Task Scheduler

LC75學習計畫。這題雖然有heap標籤,和我一開始的想法相同,要應用起來卻很麻煩,最後選擇完全不同的方法。

LeetCode 745. Prefix and Suffix Search

每日題。好像是想考字典樹吧,結果被我偷雞偷過了。字典樹的解法很多種,但沒一種我覺得容易理解的。

LeetCode 2306. Naming a Company

周賽297。當時想到了以前綴、後綴分組,但就是沒想到用集合做運算,只通過74/89測資。

LeetCode 90. Subsets II

複習回溯經典題,發現我以前竟然偷懶,全都用set去重複,沒有一次自己剪枝的。

LeetCode 2261. K Divisible Elements Subarrays

周賽291。把子陣列看成子序列,想半天才發現,浪費快半小時。 雖然當初想的是回溯,結果沒有重複使用的要素,只是普通的dfs。

LeetCode 2227. Encrypt and Decrypt Strings

周賽287。第二次全通,雖然MLE、TLE、WA各一次。 開始做的時候就看到AC人數高得誇張,想說暴力法該不會能過,結果不行。後來改成字典樹剪枝才AC。 後來聽說C++可以用暴力法直接過,感覺個語言的執行限制不是很公平。

LeetCode 763. Partition Labels

每日題。 原來以前寫過兩次,但那都是看著解答之後照做的,沒有完全理解。這次靠著自己寫出來,還能夠正確的描述邏輯,確定自己是有在進步的。

LeetCode 138. Copy List with Random Pointer

每日題。 還滿有趣的題目,大部分人都是使用space-time O(N)解法,沒想到竟然會出現space O(1)解法,敬佩不已。晚點深入研究。

LeetCode 133. Clone Graph

每日題。很久以前做過,但今天才發現討論版有人吵說題目描述很爛,看來是以前的測資爛得糟糕,但現在版本沒有問題。

LeetCode 740. Delete and Earn

趁著DP教學最近免費,把裡面的題目也刷一刷,也練習照著思考框架寫題解。

LeetCode 525. Contiguous Array

買了個小遊戲Vampire Survivors,怎這會這麼好玩,尤其是開寶箱的音效歡樂到一個不行。

LeetCode 454. 4Sum II

題目 輸入四個長度為N的整數陣列,求滿足nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0的組合(i, j, k, l)有幾種。

Back to top ↑

String

LeetCode 3138. Minimum Length of Anagram Concatenation

周賽 396。又是超級爛的題目描述,不管 LCUS 原文或是 LCCN 的翻譯都很爛,不知道在搞什麼。 描述偷改過了,原本好像是講: typically using all the original letters exactly once

LeetCode 3136. Valid Word

周賽 396。狗屎爛題,大概有一半的人都看不懂題意。而且還有小陷阱,差點吐血。

LeetCode 2983. Palindrome Rearrangement Queries

周賽378。有夠臭長的模擬題,非常多細節要考慮。 雖然說不需要什麼高級的DSA,但要在一小時內寫出來還挺難的,我用python也寫了一小時多。

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2901. Longest Unequal Adjacent Groups Subsequence II

雙周賽115。最近好幾次都是題目內容完全一樣,只改測資範圍就當成兩題,所以有人都做第二題然後去前面貼一樣的code。 結果這次好了,內容有差異,答案邏輯還完全不一樣,騙到不少人。

LeetCode 2663. Lexicographically Smallest Beautiful String

周賽343。關鍵點都有推出來,結果實作做不出來。 但我沒發現輸入的s也是美麗的,一直在糾結索引i進位後,從i+1開始所有字串都要變回a,其實在最尾端字元+1的情況下,當非尾端的索引i進位時,i+1肯定也是進位過的。 卡在奇怪的地方上,有點難受。

LeetCode 2514. Count Anagrams

雙周賽94。之前看過atlassian考類似的題目,當時只想說:這誰他媽面試做得出來。沒想到兩個月內就來討債了。

LeetCode 2483. Minimum Penalty for a Shop

雙周賽92。這題和我的相性不太好,長度N的陣列對應到N+1種選擇,花了一點時間才想通。 再加上字元的”N”和我用來計算輸入常數的N衝突,想變數名稱卡好久,最後選了小寫n, y來計算字元”N”, “Y”感覺很不舒服。

LeetCode 2478. Number of Beautiful Partitions

周賽320。本來用python寫個O(k*N^2)的dp解,可能沒睡醒才覺得又是py時間太嚴格,一氣之下跑去用go寫一次就過了。後來想想才發現不對,O(k*N^2)將近10^9次運算,再怎樣都不會是正確答案,看來是golang執行快到一個誇張。

LeetCode 2456. Most Popular Video Creator

周賽317。又是臭長題,我竟然沒出錯,給自己一個肯定。感覺這種很囉唆的題目還是乖乖拆成多個步驟來解比較好,為了省字數而拿到WA得不償失。

LeetCode 2451. Odd String Difference

雙周賽90。提交的時候本來要用ctrl+/快捷鍵註解掉測試用的輸出,結果ctrl鬆掉只打出一個斜線,得到RE。

LeetCode 2409. Count Days Spent Together

雙周賽87。夢回大學時期,那時要求算日期增減,還要考慮閏年,真是難搞的不行。 那次真留下深刻印象,我寫了一大串的垃圾,改成查表很簡單就解決了。

LeetCode 2381. Shifting Letters II

雙周賽85。第一眼覺得是線段樹,冷靜想想線段樹不應該出現在Q3才對。 其實是因為我沒有存範圍修改的線段樹模板。

LeetCode 916. Word Subsets

每日題。其他語言都要寫一長串,就只有python寫起來特別簡單,而且還可以簡化到非常誇張的程度。

LeetCode 97. Interleaving String

每日題。好久以前就看過這題,但是想不出bottom up解法,感覺很麻煩就沒碰。沒想到今天腦子不太對勁,用top down一次就過了。

LeetCode 2315. Count Asterisks

雙周賽81。這題還滿有趣的,看了他人解法才發現我的比較不同,其實我的解法應該比較好想到才對,怎麼都沒人這樣做。

LeetCode 745. Prefix and Suffix Search

每日題。好像是想考字典樹吧,結果被我偷雞偷過了。字典樹的解法很多種,但沒一種我覺得容易理解的。

LeetCode 2306. Naming a Company

周賽297。當時想到了以前綴、後綴分組,但就是沒想到用集合做運算,只通過74/89測資。

LeetCode 2296. Design a Text Editor

周賽296。有點尷尬的題目,難度不高,但我選錯資料結構差點陣亡,好在剩下最後2分鐘趕快改過來。

LeetCode 282. Expression Add Operators

跟今天每日題有點像,特地回來複習。但是我又開始糾結backtracking和dfs到底差在哪裡? 有一說是backtracaking在剪枝的時候會恢復上一動的狀態,以退回走過的路徑;又有一說dfs是處理顯式樹(路徑已經固定),而backtracaking處理的是隱式樹(自己找可行路徑出來)。 那麼這題符合隱式樹,...

LeetCode 2262. Total Appeal of A String

周賽291。苦思久等的DP終於來了,結果想不出轉移方程式,又是三題幫。 看到測資10^5還是不信邪的用bitmask做O(N^2),只通過62/76測資。

LeetCode 794. Valid Tic-Tac-Toe State

好久好久以前碰過,然後沒想出來的鳥題目,結果這題竟是某次周賽的Q1,非常合理的解釋為什麼這麼多人按爛。 當次周賽的第二名在這題吃3個WA,猜他八成氣到不行。

LeetCode 1202. Smallest String With Swaps

每日題。好久沒有在每日題出現併查集,我也好一段時間沒寫過相關題,且這篇是我第一篇寫的並查集題解! 雖然說是併查集題,但我今天是先用dfs把它解決的。我認為一個好的題目不會被侷限於單一一種解法,可能因為大多數人都如此覺得,這題的讚數才會破兩千。

LeetCode 1507. Reformat Date

意外看到某位大神的周賽講解影片,想說自己來做做看。要是我碰到這題八成會被氣死。

LeetCode 2223. Sum of Scores of Built Strings

雙周賽75。 題目要的是longest common prefix,總覺得和KMP的longest prefix suffix有八成像,但是沒有成功做出來。後來才知道出題者想考z-function。

LeetCode 2227. Encrypt and Decrypt Strings

周賽287。第二次全通,雖然MLE、TLE、WA各一次。 開始做的時候就看到AC人數高得誇張,想說暴力法該不會能過,結果不行。後來改成字典樹剪枝才AC。 後來聽說C++可以用暴力法直接過,感覺個語言的執行限制不是很公平。

LeetCode 2213. Longest Substring of One Repeating Character

周賽285沒做出來的。只有140個人通過,超級噁心。看一堆人都是用線段樹來解,但是我好像比較能夠接受sorted list。 突然想起以前上課時,老師問到java有沒有sorted list?那時我還心想要這種東西幹嘛。果然太天真了。

LeetCode 31. Next Permutation

半年以前看了果斷跳過的題。今天做556題才發現是同個道理嗎,有如醍醐灌頂。

LeetCode 763. Partition Labels

每日題。 原來以前寫過兩次,但那都是看著解答之後照做的,沒有完全理解。這次靠著自己寫出來,還能夠正確的描述邏輯,確定自己是有在進步的。

LeetCode 28. Implement strStr()

以前用暴力法可以過,最近加了新測資,舊方法就失效了。只能稍微用些奧步或是更有效率的演算法。

Back to top ↑

Easy

LeetCode 3136. Valid Word

周賽 396。狗屎爛題,大概有一半的人都看不懂題意。而且還有小陷阱,差點吐血。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2928. Distribute Candies Among Children I

雙周賽117。最近周賽真的是越來越扯,前兩題分別是分糖果1和2。但是在開賽的前幾日,分糖果3竟然以付費題的形式出現。 而且內容完全一樣,只是測資範圍變大,直接向下兼容本次兩題。真的是pay to win。

LeetCode 2923. Find Champion I

周賽370。這題有點腦筋急轉彎,害我卡了一陣子。 然後網站伺服器也在卡,中國站卻沒事,只能說中國站各方面(可用性、題庫、價格)都做得比本站好。

LeetCode 2614. Prime In Diagonal

周賽339。難得Q1的數字這麼大,搞到質數篩直接TLE,太誇張了。 聽說有不少人沒有把1當成質數吃了WA。說起來我的模板也沒有判斷到這點,趕緊去更新。

LeetCode 2451. Odd String Difference

雙周賽90。提交的時候本來要用ctrl+/快捷鍵註解掉測試用的輸出,結果ctrl鬆掉只打出一個斜線,得到RE。

LeetCode 2409. Count Days Spent Together

雙周賽87。夢回大學時期,那時要求算日期增減,還要考慮閏年,真是難搞的不行。 那次真留下深刻印象,我寫了一大串的垃圾,改成查表很簡單就解決了。

LeetCode 2379. Minimum Recolors to Get K Consecutive Black Blocks

雙周賽85。老實說看到這題有嚇到,一時想不到怎麼暴力解,難道Q1就要求滑動窗口?感覺這次比賽有點可怕。 雖然後來確定能用暴力解,但是討論區有人說做出Q4確做不出這題,有點誇張。

LeetCode 2315. Count Asterisks

雙周賽81。這題還滿有趣的,看了他人解法才發現我的比較不同,其實我的解法應該比較好想到才對,怎麼都沒人這樣做。

LeetCode 2293. Min Max Game

周賽296。模擬題,幸好腦筋轉得快,似乎不少人糾結在怎麼找規律而卡很久。

LeetCode 1507. Reformat Date

意外看到某位大神的周賽講解影片,想說自己來做做看。要是我碰到這題八成會被氣死。

LeetCode 1507. Reformat Date

意外看到某位大神的周賽講解影片,想說自己來做做看。要是我碰到這題八成會被氣死。

LeetCode 441. Arranging Coins

最近幾天在玩二分搜學習計畫,才想著這題應該會出現,今天果然碰上了。 這題按爛的人還不少,不知道是不是把問題想得太複雜,明明暴力法也可以過。

LeetCode 28. Implement strStr()

以前用暴力法可以過,最近加了新測資,舊方法就失效了。只能稍微用些奧步或是更有效率的演算法。

LeetCode 1232. Check If It Is a Straight Line

Study Plan - Programming Skills。 小小抒發一下,討論區的解答清一色都是同時檢查三點斜率的公式: (y - y1) / (x - x1) = (y1 - y0) / (x1 - x0)

LeetCode 605. Can Place Flowers

好多做過的題目經過一段時間就忘記了,回顧提交紀錄還搞不懂自己怎麼寫出來的解法,希望以此加強印象,也分享給需要的朋友。

Back to top ↑

DP

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2928. Distribute Candies Among Children I

雙周賽117。最近周賽真的是越來越扯,前兩題分別是分糖果1和2。但是在開賽的前幾日,分糖果3竟然以付費題的形式出現。 而且內容完全一樣,只是測資範圍變大,直接向下兼容本次兩題。真的是pay to win。

LeetCode 2901. Longest Unequal Adjacent Groups Subsequence II

雙周賽115。最近好幾次都是題目內容完全一樣,只改測資範圍就當成兩題,所以有人都做第二題然後去前面貼一樣的code。 結果這次好了,內容有差異,答案邏輯還完全不一樣,騙到不少人。

LeetCode 2830. Maximize the Profit as the Salesman

周賽359。印象中哩扣上有兩題相似題,其中一個幾乎完全一樣,但是這次有四千人通過,也太扯。 相似題2008. maximum earnings from taxi,當初才一千人通過。

LeetCode 2787. Ways to Express an Integer as Sum of Powers

雙周賽109。還是dp,測資範圍很奇怪,總感覺有奇怪的地雷,害我擔心很久。 雖然我是沒有踩中,但是理論上不重複的測資只有300*5種,官方卻搞了1502組,不知道存什麼心。

LeetCode 2681. Power of Heroes

雙周賽104。這題也繞好大一圈的遠路,搞出一個沒什麼人用的解法,但好歹是過了。

LeetCode 2581. Count Number of Possible Root Nodes

雙周賽99。不小心開了10^5*10^5的陣列,結果不噴MLE而是TLE。我想了半天不理解為什麼O(N)解不會過,後來才發現是被陣列初始化時間卡死,太智障了。

LeetCode 2547. Minimum Cost to Split an Array

周賽329。靠python有時候真的很吃運氣,明明複雜度是對的,可是就是會TLE。比賽當時優化了兩次才AC。 後來再把TLE的程式碼交一次,竟然又AC了,莫名其妙。

LeetCode 2478. Number of Beautiful Partitions

周賽320。本來用python寫個O(k*N^2)的dp解,可能沒睡醒才覺得又是py時間太嚴格,一氣之下跑去用go寫一次就過了。後來想想才發現不對,O(k*N^2)將近10^9次運算,再怎樣都不會是正確答案,看來是golang執行快到一個誇張。

LeetCode 2407. Longest Increasing Subsequence II

周賽310。每次python寫線段樹都很痛苦,很容易出bug就算了,還常常超時。明明就是正確的複雜度還是TLE,嘔氣到不行。 比賽結束後我自己又拿當時TLE的程式碼再交一次,竟然就過了(????),真的氣氣氣氣,還我300名來。

LeetCode 2376. Count Special Integers

周賽306。這題真是傷透我心,本來看測資範圍10位數應該也是可以回溯的,很抱歉不行。但是又聽說JAVA和C++能夠通過,看來又是歧視PY。

LeetCode 2370. Longest Ideal Subsequence

周賽305。第一次看到Q4是medium,但我卻一點頭緒都沒有。賽後才知道這題也是DP,當下心情真的糟到一個不行。 難得Q3和Q4都是理應擅長的DP,結果兩題都沒發現,真的該好好反省。

LeetCode 1696. Jump Game VI

每日題。明明以前寫過,但是卻想不起來。看來我跟單調佇列還是不夠熟。

LeetCode 97. Interleaving String

每日題。好久以前就看過這題,但是想不出bottom up解法,感覺很麻煩就沒碰。沒想到今天腦子不太對勁,用top down一次就過了。

LeetCode 2322. Minimum Score After Removals on a Tree

周賽299。看就想到樹狀dp,但不知道怎麼表達切開的子樹。一直想著要怎麼在dfs函數上處理切割第幾刀,整個思路都是錯的。 說起來這兩次周賽都完全沒出bug,雖然都沒做出Q4,但排名還算前面,算挺開心的。

LeetCode 2312. Selling Pieces of Wood

周賽298。雖然知道是DP但不知道怎麼切塊,想了半天想不出,好苦。 雖然官方標籤有個回溯,但我還真沒看到有人用回溯解法。

LeetCode 120. Triangle

每日題。這題如果按照題意往下走會很麻煩,換個方向會簡單非常多。

LeetCode 464. Can I Win

隨便抽的一題,感覺最後的測資有點沒意思,故意放來卡人家WA的。

LeetCode 790. Domino and Tromino Tiling

推理型DP,第一次碰到的時候是每日題,那時我直接印出所有測資找出公式解,但沒有實際理解怎麼推導的。今天特地來補課,發現還真有點難度。

LeetCode 2262. Total Appeal of A String

周賽291。苦思久等的DP終於來了,結果想不出轉移方程式,又是三題幫。 看到測資10^5還是不信邪的用bitmask做O(N^2),只通過62/76測資。

LeetCode 931. Minimum Falling Path Sum

DP教學系列。總覺得這些計數型DP應該放到教學前半段,畢竟相對容易理解,不然前面的題目有些太噁心了。

LeetCode 78. Subsets

每日題。突然發現沒有寫過回溯法的題解,今天剛好碰上。 題外話,jekyll碰到大括號會解釋成luquid造成爆炸,直接換成全形好了。

LeetCode 62. Unique Paths

DP教學系列。這種算路徑的都比較直觀,可以輕鬆的找出bottom-up解。

LeetCode 322. Coin Change

DP教學系列。經典中的經典,似乎是幾年前首次接觸DP時碰到的。

LeetCode 740. Delete and Earn

趁著DP教學最近免費,把裡面的題目也刷一刷,也練習照著思考框架寫題解。

LeetCode 741. Cherry Pickup

題目 N*N的矩陣,0表示空格位,1表示櫻桃,-1是障礙不可過。 先從左上角出發,只能往下或是往右走,到達右下角後,再走回起點,只能往左或往上。 每顆櫻桃只能拿一次,求最多可收集多少櫻桃。

LeetCode 1510. Stone Game IV

Stone Game系列使我想起某次競賽的慘況,AC率只有10%,好險這題沒那麼刁鑽。拜託Alice和Bob玩點簡單的遊戲吧!

LeetCode 1463. Cherry Pickup II

題目 給一個矩陣,每格的值代表櫻桃數量,有兩個機器人分別從左上、右上角出發,求最多可以拿到多少櫻桃。 機器人每次移動只能往左下、正下或是右下移動。

Back to top ↑

Greedy

LeetCode 3086. Minimum Moves to Pick K Ones

周賽 389。基本上是以前出過題目的大補包,道理我都懂,但就是一直寫錯。 前綴和求距離和這東西好像是第四次考,該替他準備模板了。 相似題:

LeetCode 2923. Find Champion I

周賽370。這題有點腦筋急轉彎,害我卡了一陣子。 然後網站伺服器也在卡,中國站卻沒事,只能說中國站各方面(可用性、題庫、價格)都做得比本站好。

LeetCode 2680. Maximum OR

雙周賽104。這題有點小難度,結果我搞出的解法和大部分人都不一樣。

LeetCode 2663. Lexicographically Smallest Beautiful String

周賽343。關鍵點都有推出來,結果實作做不出來。 但我沒發現輸入的s也是美麗的,一直在糾結索引i進位後,從i+1開始所有字串都要變回a,其實在最尾端字元+1的情況下,當非尾端的索引i進位時,i+1肯定也是進位過的。 卡在奇怪的地方上,有點難受。

LeetCode 2483. Minimum Penalty for a Shop

雙周賽92。這題和我的相性不太好,長度N的陣列對應到N+1種選擇,花了一點時間才想通。 再加上字元的”N”和我用來計算輸入常數的N衝突,想變數名稱卡好久,最後選了小寫n, y來計算字元”N”, “Y”感覺很不舒服。

LeetCode 2453. Destroy Sequential Targets

雙周賽90。之前看人家寫貪心題都可以壓成one loop,感覺很帥就試試看,結果寫錯拿一個WA。我看以後還是乖乖拆成多個步驟。

LeetCode 621. Task Scheduler

LC75學習計畫。這題雖然有heap標籤,和我一開始的想法相同,要應用起來卻很麻煩,最後選擇完全不同的方法。

LeetCode 2350. Shortest Impossible Sequence of Rolls

雙周賽83。超級腦筋急轉彎,總覺得有O(N)解法,但就是想不出來。 說起來leetcode官方也是誇張,有人直播洩題4次都沒被懲處,所謂的作弊零容忍根本是笑話,看看就好。

LeetCode 135. Candy

每日題。依照小朋友的分數來發糖果,同樣分數拿到不同數量的糖果沒關係,但是比低分的人一定不行拿更多,其實也不是很公平。

LeetCode 2178. Maximum Split of Positive Even Integers

模擬雙周賽72。回想起來,當時練習的時候是5/7晚上10點左右,結果網站竟然炸掉快半小時!當時還想說:明天周賽最好不要給我出事,然後就真的出事了。

LeetCode 441. Arranging Coins

最近幾天在玩二分搜學習計畫,才想著這題應該會出現,今天果然碰上了。 這題按爛的人還不少,不知道是不是把問題想得太複雜,明明暴力法也可以過。

LeetCode 763. Partition Labels

每日題。 原來以前寫過兩次,但那都是看著解答之後照做的,沒有完全理解。這次靠著自己寫出來,還能夠正確的描述邏輯,確定自己是有在進步的。

LeetCode 605. Can Place Flowers

好多做過的題目經過一段時間就忘記了,回顧提交紀錄還搞不懂自己怎麼寫出來的解法,希望以此加強印象,也分享給需要的朋友。

Back to top ↑

Sorting

LeetCode 3138. Minimum Length of Anagram Concatenation

周賽 396。又是超級爛的題目描述,不管 LCUS 原文或是 LCCN 的翻譯都很爛,不知道在搞什麼。 描述偷改過了,原本好像是講: typically using all the original letters exactly once

LeetCode 2830. Maximize the Profit as the Salesman

周賽359。印象中哩扣上有兩題相似題,其中一個幾乎完全一樣,但是這次有四千人通過,也太扯。 相似題2008. maximum earnings from taxi,當初才一千人通過。

LeetCode 2766. Relocate Marbles

雙周賽108。這Q2相對佛心,還保證移動來源一定有彈珠,讓不少人逃過WA,不如跟Q1交換。

LeetCode 2751. Robot Collisions

周賽351。有點像是2731. movement of robots,當初浪費一堆時間做的模擬解竟然在今天得到回報。 然後我還想到[735. Asteroid Collision]這題,基本上是一樣的東西。

LeetCode 2731. Movement of Robots

雙周賽106。這種腦筋急轉彎題真的是很垃圾,講一堆廢話結果都沒有用,每次都被這種爛題浪費時間。

LeetCode 2681. Power of Heroes

雙周賽104。這題也繞好大一圈的遠路,搞出一個沒什麼人用的解法,但好歹是過了。

LeetCode 2454. Next Greater Element IV

雙周賽90。眼殘到不行,明明範例一和我的答案不同,還是交了出去,好冤枉的WA。即使總共吃了4個BUG,還是拿到600名,也不算太差。

LeetCode 148. Sort List

每日題,難度上下限很大,依據作法不同要說是easy或hard都可以。

Back to top ↑

Simulation

LeetCode 3138. Minimum Length of Anagram Concatenation

周賽 396。又是超級爛的題目描述,不管 LCUS 原文或是 LCCN 的翻譯都很爛,不知道在搞什麼。 描述偷改過了,原本好像是講: typically using all the original letters exactly once

LeetCode 3136. Valid Word

周賽 396。狗屎爛題,大概有一半的人都看不懂題意。而且還有小陷阱,差點吐血。

LeetCode 3001. Minimum Moves to Capture The Queen

周賽379。又打錯變數名稱,再喜提一隻BUG。 這種囉嗦的分類討論,一次寫出正確邏輯還是挺高興的。結果碰到打錯字這種低能錯誤,心情複雜。 而且我不會玩西洋棋。

LeetCode 2983. Palindrome Rearrangement Queries

周賽378。有夠臭長的模擬題,非常多細節要考慮。 雖然說不需要什麼高級的DSA,但要在一小時內寫出來還挺難的,我用python也寫了一小時多。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2928. Distribute Candies Among Children I

雙周賽117。最近周賽真的是越來越扯,前兩題分別是分糖果1和2。但是在開賽的前幾日,分糖果3竟然以付費題的形式出現。 而且內容完全一樣,只是測資範圍變大,直接向下兼容本次兩題。真的是pay to win。

LeetCode 2766. Relocate Marbles

雙周賽108。這Q2相對佛心,還保證移動來源一定有彈珠,讓不少人逃過WA,不如跟Q1交換。

LeetCode 2751. Robot Collisions

周賽351。有點像是2731. movement of robots,當初浪費一堆時間做的模擬解竟然在今天得到回報。 然後我還想到[735. Asteroid Collision]這題,基本上是一樣的東西。

LeetCode 2402. Meeting Rooms III

周賽309。相似題1606. find servers that handled most number of requests。沒有排序吃一個WA,好慘。

LeetCode 858. Mirror Reflection

每日題。寫起來不是很舒服的題,早上本來看到900個爛,現在已經1300了。倒是沒想到暴力模擬也能過就是了。

LeetCode 2326. Spiral Matrix IV

周賽300。看到Spiral Matrix就想說完蛋,這系列都很麻煩,結果還真的卡了我十分鐘debug。

LeetCode 2293. Min Max Game

周賽296。模擬題,幸好腦筋轉得快,似乎不少人糾結在怎麼找規律而卡很久。

Back to top ↑

Math

LeetCode 2928. Distribute Candies Among Children I

雙周賽117。最近周賽真的是越來越扯,前兩題分別是分糖果1和2。但是在開賽的前幾日,分糖果3竟然以付費題的形式出現。 而且內容完全一樣,只是測資範圍變大,直接向下兼容本次兩題。真的是pay to win。

LeetCode 2906. Construct Product Matrix

周賽367。這題可有趣了,根據不同方法,實作的難度和程式碼量有著天大的差異。 這種沒有hard的手速場還是穩穩地寫,沒出BUG才不會排名炸裂。

LeetCode 2614. Prime In Diagonal

周賽339。難得Q1的數字這麼大,搞到質數篩直接TLE,太誇張了。 聽說有不少人沒有把1當成質數吃了WA。說起來我的模板也沒有判斷到這點,趕緊去更新。

LeetCode 2514. Count Anagrams

雙周賽94。之前看過atlassian考類似的題目,當時只想說:這誰他媽面試做得出來。沒想到兩個月內就來討債了。

LeetCode 2470. Number of Subarrays With LCM Equal to K

周賽319。相似題2447. number of subarrays with gcd equal to k。 比賽時忘記python內建有lcm函數,自己寫了奇怪的判斷有通過,後來被rejudge掉,真是死的莫名其妙。

LeetCode 89. Gray Code

今天每日題的原題,當初碰到也覺得很奇妙,比較需要特別記住這個東西。

LeetCode 458. Poor Pigs

每日題。這好像是微軟的毒老鼠面試題改版,難怪覺得眼熟眼熟。

LeetCode 858. Mirror Reflection

每日題。寫起來不是很舒服的題,早上本來看到900個爛,現在已經1300了。倒是沒想到暴力模擬也能過就是了。

LeetCode 29. Divide Two Integers

每日題。這題從好久以前就看過了,沒什麼想法,而且還超多爛,就沒想碰他。竟然出現在每日題,看來會增加更多爛。

LeetCode 464. Can I Win

隨便抽的一題,感覺最後的測資有點沒意思,故意放來卡人家WA的。

LeetCode 2178. Maximum Split of Positive Even Integers

模擬雙周賽72。回想起來,當時練習的時候是5/7晚上10點左右,結果網站竟然炸掉快半小時!當時還想說:明天周賽最好不要給我出事,然後就真的出事了。

LeetCode 282. Expression Add Operators

跟今天每日題有點像,特地回來複習。但是我又開始糾結backtracking和dfs到底差在哪裡? 有一說是backtracaking在剪枝的時候會恢復上一動的狀態,以退回走過的路徑;又有一說dfs是處理顯式樹(路徑已經固定),而backtracaking處理的是隱式樹(自己找可行路徑出來)。 那麼這題符合隱式樹,...

LeetCode 2249. Count Lattice Points Inside a Circle

周賽290。看到題目差點嚇尿,想起某次Q2挖骨董的噩夢,結果還真和那次差不多慘烈,用了錯誤方法吃兩個WA。 不過這題給python的時間限制好像很短,看到好幾個python大老拿到TLE,很生氣的上去罵官方,剛好我的解法沒有超時而已。

LeetCode 172. Factorial Trailing Zeroes

跟2245. Maximum Trailing Zeros in a Cornered Path有點關係。 很久以前理應看過這題,八成是因為沒什麼想法就略過不管,沒想到那時欠下的債竟在比賽的時候被催繳,太苦了。

LeetCode 2217. Find Palindrome With Fixed Length

周賽286。看到回文真是又驚又喜,數不清我曾經被他害死幾次。這題要推算的東西有夠多,好險有成功算出來。 然後範例竟然還有打錯,只是錯得太明顯,應該大部分人都有發現。

LeetCode 31. Next Permutation

半年以前看了果斷跳過的題。今天做556題才發現是同個道理嗎,有如醍醐灌頂。

LeetCode 1232. Check If It Is a Straight Line

Study Plan - Programming Skills。 小小抒發一下,討論區的解答清一色都是同時檢查三點斜率的公式: (y - y1) / (x - x1) = (y1 - y0) / (x1 - x0)

Back to top ↑

BinarySearch

LeetCode 3187. Peaks in Array

周賽 402。又是線段樹題,這次我有把樹搞出來,但是題目查詢的地方沒想通,又繞了大遠路去搞 sorted list。 除了思路有點障礙之外,寫得還很醜,真的差點沒寫出來。

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2940. Find Building Where Alice and Bob Can Meet

周賽372。前陣子在整理線段樹模板,剛好練習到相似題2286. booking concert tickets in groups。 樹是有成功搞出來,但是誤會題目的要求,有些小問題會算出錯誤答案,好可惜。

LeetCode 2454. Next Greater Element IV

雙周賽90。眼殘到不行,明明範例一和我的答案不同,還是交了出去,好冤枉的WA。即使總共吃了4個BUG,還是拿到600名,也不算太差。

LeetCode 2258. Escape the Spreading Fire

雙周賽77。堪稱最近幾次Q4中最難的,排行榜前50名的人七成都噴過WA。 本來還以為我算擅長二分搜,結果兩次Q4碰到二分搜都沒有察覺,敏銳度有待加強。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

LeetCode 162. Find Peak Element

二分搜學習計畫。不太直覺但是很剛好可以二分搜的題目,而且因為測資很小,導致暴力法跑起來比二分搜還快。

LeetCode 2251. Number of Flowers in Full Bloom

周賽290。其實很簡單的題目,只是我看到寬度10^9又有range update,就跑去搞線段樹,好不容易弄出來又TLE,沒有好好把握住這次機會。 周賽結束後改成前綴和5分鐘就寫完了,好可惜。

LeetCode 2234. Maximum Total Beauty of the Gardens

周賽288。大多數人都是二分搜解法,我雖然也有嘗試二分搜,不過是搜所有花園最低值上限,之後從上限開始往下爆搜,效率太差。 想了兩天總算稍微理解別人的答案。

LeetCode 441. Arranging Coins

最近幾天在玩二分搜學習計畫,才想著這題應該會出現,今天果然碰上了。 這題按爛的人還不少,不知道是不是把問題想得太複雜,明明暴力法也可以過。

LeetCode 729. My Calendar I

用牛刀殺雞,最後還變成電宰場了。 從最初的的暴力法不斷進化,到sorted list(有序串列?),又到二分搜尋樹,最後是動態開點線段樹。

LeetCode 2213. Longest Substring of One Repeating Character

周賽285沒做出來的。只有140個人通過,超級噁心。看一堆人都是用線段樹來解,但是我好像比較能夠接受sorted list。 突然想起以前上課時,老師問到java有沒有sorted list?那時我還心想要這種東西幹嘛。果然太天真了。

Back to top ↑

TwoPointers

LeetCode 3171. Find Subarray With Bitwise AND Closest to K

周賽 400。更新答案少寫一行,虧一個 WA,好慘。 LC 官方最近宣布使用先進的作弊檢查計數,嚴格禁止任何作弊行為,不知道效果如何。 唯一確定的是這場伺服器有點問題,希望別又在我上分的時候 unrate。

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2958. Length of Longest Subarray With at Most K Frequency

雙周賽119。非常簡單,但是測資好像有點爭議。 題目保證了1 <= k <= nums.length,但聽說有好幾筆測資出現大於nums長度的k,害某些人噴錯。 可能有人拿k和len(nums)取最小值,反而被這個爛東西坑了。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 86. Partition List

每日題。又是linked list,但沒有昨天的那麼麻煩。今天寫出來的code跟之前幾乎完全相同,差在變數名不同而已,真神奇。

LeetCode 143. Reorder List

今天帶臭狗去照心臟超音波,打了利尿劑,結果把我褲子全都尿濕了。

LeetCode 763. Partition Labels

每日題。 原來以前寫過兩次,但那都是看著解答之後照做的,沒有完全理解。這次靠著自己寫出來,還能夠正確的描述邏輯,確定自己是有在進步的。

LeetCode 28. Implement strStr()

以前用暴力法可以過,最近加了新測資,舊方法就失效了。只能稍微用些奧步或是更有效率的演算法。

LeetCode 148. Sort List

每日題,難度上下限很大,依據作法不同要說是easy或hard都可以。

Back to top ↑

Matrix

LeetCode 3047. Find the Largest Area of Square Inside Two Rectangles

周賽386。我真的是被這題搞死了,寫半天還錯好多次,剩下時間還不夠做 Q3。應該會破最低名次紀錄,最近幾場周賽打的分全沒了。 上次 3027. find the number of ways to place people ii 也是,看來我的腦子碰到座標系相關的題都會大爆炸。

LeetCode 2923. Find Champion I

周賽370。這題有點腦筋急轉彎,害我卡了一陣子。 然後網站伺服器也在卡,中國站卻沒事,只能說中國站各方面(可用性、題庫、價格)都做得比本站好。

LeetCode 2906. Construct Product Matrix

周賽367。這題可有趣了,根據不同方法,實作的難度和程式碼量有著天大的差異。 這種沒有hard的手速場還是穩穩地寫,沒出BUG才不會排名炸裂。

LeetCode 2658. Maximum Number of Fish in a Grid

雙周賽103。這鬼題當初還標hard,一看發現根本是經典題,真是騙很大。今天寫題解發現被打回medium。 順帶一題,這題正是字面意思的竭澤而漁。

LeetCode 2614. Prime In Diagonal

周賽339。難得Q1的數字這麼大,搞到質數篩直接TLE,太誇張了。 聽說有不少人沒有把1當成質數吃了WA。說起來我的模板也沒有判斷到這點,趕緊去更新。

LeetCode 2536. Increment Submatrices by One

周賽328。這題有點微妙,以前在Q2用了2D前綴和,後來才發現只需要暴力法,總覺得這次也要暴力。 結果看到測資範圍發現不對,但又想不到什麼太好的方法,無法確定會不會TLE。

LeetCode 2392. Build a Matrix With Conditions

周賽308。其實算是很簡單的Q4,但我沒看出來是拓樸排序,在那邊貪心半天。賽後看到知道是拓樸排序就馬上寫出來了,好冤。

LeetCode 2326. Spiral Matrix IV

周賽300。看到Spiral Matrix就想說完蛋,這系列都很麻煩,結果還真的卡了我十分鐘debug。

LeetCode 2258. Escape the Spreading Fire

雙周賽77。堪稱最近幾次Q4中最難的,排行榜前50名的人七成都噴過WA。 本來還以為我算擅長二分搜,結果兩次Q4碰到二分搜都沒有察覺,敏銳度有待加強。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

LeetCode 2249. Count Lattice Points Inside a Circle

周賽290。看到題目差點嚇尿,想起某次Q2挖骨董的噩夢,結果還真和那次差不多慘烈,用了錯誤方法吃兩個WA。 不過這題給python的時間限制好像很短,看到好幾個python大老拿到TLE,很生氣的上去罵官方,剛好我的解法沒有超時而已。

LeetCode 2245. Maximum Trailing Zeros in a Cornered Path

周賽289。本來寫得挺流暢,直到碰到這垃圾題,搞將近一小時才想到核心概念,但是來不及寫出來。 後來自己找時間寫,也差不多敲了20分鐘才把BUG處理完,敲完50行手差點沒斷掉,要說這題是hard應該很多人都同意。 更誇張的是史帝芬大神用numpy寫出7行版本,有夠誇張。

LeetCode 1020. Number of Enclaves

Study Plan - Graph Theory。 這套題前面都是這種小島題,就算只要稍微改程式碼還是覺得有點無聊。

LeetCode 931. Minimum Falling Path Sum

DP教學系列。總覺得這些計數型DP應該放到教學前半段,畢竟相對容易理解,不然前面的題目有些太噁心了。

Back to top ↑

BitManipulation

LeetCode 3171. Find Subarray With Bitwise AND Closest to K

周賽 400。更新答案少寫一行,虧一個 WA,好慘。 LC 官方最近宣布使用先進的作弊檢查計數,嚴格禁止任何作弊行為,不知道效果如何。 唯一確定的是這場伺服器有點問題,希望別又在我上分的時候 unrate。

LeetCode 3108. Minimum Cost Walk in Weighted Graph

周賽 392。這題也有點問題,沒講清楚起點和終點相同要怎樣,只能猜 -1 或是 0。 前一百名內有 8X 人都猜錯了,笑死。至少錯一次後就知道答案,沒有隱藏測資很良心了。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2846. Minimum Edge Weight Equilibrium Queries in a Tree

周賽361。上週才考過倍增,這週馬上就考進階用法,真變態。 雖說是進階版,但LCA倍增其實算是競賽的常見題目,網路上隨便都找得到模板可以套用。可能因此通過人數比上次還多。

LeetCode 2680. Maximum OR

雙周賽104。這題有點小難度,結果我搞出的解法和大部分人都不一樣。

LeetCode 89. Gray Code

今天每日題的原題,當初碰到也覺得很奇妙,比較需要特別記住這個東西。

LeetCode 393. UTF-8 Validation

每日題。超多人點爛,可能是題目描述不太清楚的關係。雖然一開始我也覺得是垃圾題,但看到最佳解後覺得非常漂亮。

LeetCode 29. Divide Two Integers

每日題。這題從好久以前就看過了,沒什麼想法,而且還超多爛,就沒想碰他。竟然出現在每日題,看來會增加更多爛。

LeetCode 464. Can I Win

隨便抽的一題,感覺最後的測資有點沒意思,故意放來卡人家WA的。

LeetCode 90. Subsets II

複習回溯經典題,發現我以前竟然偷懶,全都用set去重複,沒有一次自己剪枝的。

Back to top ↑

DFS

LeetCode 3108. Minimum Cost Walk in Weighted Graph

周賽 392。這題也有點問題,沒講清楚起點和終點相同要怎樣,只能猜 -1 或是 0。 前一百名內有 8X 人都猜錯了,笑死。至少錯一次後就知道答案,沒有隱藏測資很良心了。

LeetCode 2924. Find Champion II

周賽370。剛開始想成拓樸排序,想說Q2怎麼會出這種,還真不好做。當然是有更簡單的方法。

LeetCode 2663. Lexicographically Smallest Beautiful String

周賽343。關鍵點都有推出來,結果實作做不出來。 但我沒發現輸入的s也是美麗的,一直在糾結索引i進位後,從i+1開始所有字串都要變回a,其實在最尾端字元+1的情況下,當非尾端的索引i進位時,i+1肯定也是進位過的。 卡在奇怪的地方上,有點難受。

LeetCode 2658. Maximum Number of Fish in a Grid

雙周賽103。這鬼題當初還標hard,一看發現根本是經典題,真是騙很大。今天寫題解發現被打回medium。 順帶一題,這題正是字面意思的竭澤而漁。

LeetCode 2322. Minimum Score After Removals on a Tree

周賽299。看就想到樹狀dp,但不知道怎麼表達切開的子樹。一直想著要怎麼在dfs函數上處理切割第幾刀,整個思路都是錯的。 說起來這兩次周賽都完全沒出bug,雖然都沒做出Q4,但排名還算前面,算挺開心的。

LeetCode 2261. K Divisible Elements Subarrays

周賽291。把子陣列看成子序列,想半天才發現,浪費快半小時。 雖然當初想的是回溯,結果沒有重複使用的要素,只是普通的dfs。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

LeetCode 1202. Smallest String With Swaps

每日題。好久沒有在每日題出現併查集,我也好一段時間沒寫過相關題,且這篇是我第一篇寫的並查集題解! 雖然說是併查集題,但我今天是先用dfs把它解決的。我認為一個好的題目不會被侷限於單一一種解法,可能因為大多數人都如此覺得,這題的讚數才會破兩千。

LeetCode 173. Binary Search Tree Iterator

每日題。已經不知道是第幾天二元搜尋樹,這題和前幾天的230. Kth Smallest Element in a BST有一點相關,這順序安排就有感受到管理團隊的用心。

LeetCode 99. Recover Binary Search Tree

每日題。又是二分搜尋樹,follow up還要求O(1)空間解法,結果人有爆氣說沒必要反芻五十年前的垃圾演算法,有夠好笑。

LeetCode 1020. Number of Enclaves

Study Plan - Graph Theory。 這套題前面都是這種小島題,就算只要稍微改程式碼還是覺得有點無聊。

LeetCode 133. Clone Graph

每日題。很久以前做過,但今天才發現討論版有人吵說題目描述很爛,看來是以前的測資爛得糟糕,但現在版本沒有問題。

LeetCode 886. Possible Bipartition

題目 有n個人,輸入dislikes陣列,表示a討厭b,不想跟對方在一起,求是否有辦法把所有人成功分為兩組。

Back to top ↑

PrefixSum

LeetCode 3086. Minimum Moves to Pick K Ones

周賽 389。基本上是以前出過題目的大補包,道理我都懂,但就是一直寫錯。 前綴和求距離和這東西好像是第四次考,該替他準備模板了。 相似題:

LeetCode 2983. Palindrome Rearrangement Queries

周賽378。有夠臭長的模擬題,非常多細節要考慮。 雖然說不需要什麼高級的DSA,但要在一小時內寫出來還挺難的,我用python也寫了一小時多。

LeetCode 2928. Distribute Candies Among Children I

雙周賽117。最近周賽真的是越來越扯,前兩題分別是分糖果1和2。但是在開賽的前幾日,分糖果3竟然以付費題的形式出現。 而且內容完全一樣,只是測資範圍變大,直接向下兼容本次兩題。真的是pay to win。

LeetCode 2906. Construct Product Matrix

周賽367。這題可有趣了,根據不同方法,實作的難度和程式碼量有著天大的差異。 這種沒有hard的手速場還是穩穩地寫,沒出BUG才不會排名炸裂。

LeetCode 2846. Minimum Edge Weight Equilibrium Queries in a Tree

周賽361。上週才考過倍增,這週馬上就考進階用法,真變態。 雖說是進階版,但LCA倍增其實算是競賽的常見題目,網路上隨便都找得到模板可以套用。可能因此通過人數比上次還多。

LeetCode 2681. Power of Heroes

雙周賽104。這題也繞好大一圈的遠路,搞出一個沒什麼人用的解法,但好歹是過了。

LeetCode 2680. Maximum OR

雙周賽104。這題有點小難度,結果我搞出的解法和大部分人都不一樣。

LeetCode 2536. Increment Submatrices by One

周賽328。這題有點微妙,以前在Q2用了2D前綴和,後來才發現只需要暴力法,總覺得這次也要暴力。 結果看到測資範圍發現不對,但又想不到什麼太好的方法,無法確定會不會TLE。

LeetCode 2483. Minimum Penalty for a Shop

雙周賽92。這題和我的相性不太好,長度N的陣列對應到N+1種選擇,花了一點時間才想通。 再加上字元的”N”和我用來計算輸入常數的N衝突,想變數名稱卡好久,最後選了小寫n, y來計算字元”N”, “Y”感覺很不舒服。

LeetCode 2478. Number of Beautiful Partitions

周賽320。本來用python寫個O(k*N^2)的dp解,可能沒睡醒才覺得又是py時間太嚴格,一氣之下跑去用go寫一次就過了。後來想想才發現不對,O(k*N^2)將近10^9次運算,再怎樣都不會是正確答案,看來是golang執行快到一個誇張。

LeetCode 2381. Shifting Letters II

雙周賽85。第一眼覺得是線段樹,冷靜想想線段樹不應該出現在Q3才對。 其實是因為我沒有存範圍修改的線段樹模板。

LeetCode 2251. Number of Flowers in Full Bloom

周賽290。其實很簡單的題目,只是我看到寬度10^9又有range update,就跑去搞線段樹,好不容易弄出來又TLE,沒有好好把握住這次機會。 周賽結束後改成前綴和5分鐘就寫完了,好可惜。

LeetCode 2245. Maximum Trailing Zeros in a Cornered Path

周賽289。本來寫得挺流暢,直到碰到這垃圾題,搞將近一小時才想到核心概念,但是來不及寫出來。 後來自己找時間寫,也差不多敲了20分鐘才把BUG處理完,敲完50行手差點沒斷掉,要說這題是hard應該很多人都同意。 更誇張的是史帝芬大神用numpy寫出7行版本,有夠誇張。

LeetCode 2234. Maximum Total Beauty of the Gardens

周賽288。大多數人都是二分搜解法,我雖然也有嘗試二分搜,不過是搜所有花園最低值上限,之後從上限開始往下爆搜,效率太差。 想了兩天總算稍微理解別人的答案。

LeetCode 525. Contiguous Array

買了個小遊戲Vampire Survivors,怎這會這麼好玩,尤其是開寶箱的音效歡樂到一個不行。

Back to top ↑

Graph

LeetCode 3108. Minimum Cost Walk in Weighted Graph

周賽 392。這題也有點問題,沒講清楚起點和終點相同要怎樣,只能猜 -1 或是 0。 前一百名內有 8X 人都猜錯了,笑死。至少錯一次後就知道答案,沒有隱藏測資很良心了。

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2924. Find Champion II

周賽370。剛開始想成拓樸排序,想說Q2怎麼會出這種,還真不好做。當然是有更簡單的方法。

LeetCode 2608. Shortest Cycle in a Graph

雙周賽101。我一直卡在不知道如何處理奇數環和偶數環。正確應該在入佇列之前就判斷環,而不是進去後才判斷,有夠尷尬。 最近官方水準越來越垃圾,不抓作弊就算了,還直接這種google名稱就可以找到答案的題目,直接冒出兩三千個作弊哥貼答案,誠實的同學們真的被打個半死。

LeetCode 2603. Collect Coins in a Tree

周賽338。網站卡了40幾分鐘,做完前面三題根本沒時間看,連題目都沒看懂就結束了。不過我倒有猜到是拓樸排序。

LeetCode 2581. Count Number of Possible Root Nodes

雙周賽99。不小心開了10^5*10^5的陣列,結果不噴MLE而是TLE。我想了半天不理解為什麼O(N)解不會過,後來才發現是被陣列初始化時間卡死,太智障了。

LeetCode 2421. Number of Good Paths

周賽312。真的是吐血了,寫一半有人打電話來,寫出一坨狗屎code,分心狀況下根本沒辦法debug。後來才發現我把for寫成if,整題就毀了,好慘。

LeetCode 2392. Build a Matrix With Conditions

周賽308。其實算是很簡單的Q4,但我沒看出來是拓樸排序,在那邊貪心半天。賽後看到知道是拓樸排序就馬上寫出來了,好冤。

LeetCode 133. Clone Graph

每日題。很久以前做過,但今天才發現討論版有人吵說題目描述很爛,看來是以前的測資爛得糟糕,但現在版本沒有問題。

LeetCode 886. Possible Bipartition

題目 有n個人,輸入dislikes陣列,表示a討厭b,不想跟對方在一起,求是否有辦法把所有人成功分為兩組。

Back to top ↑

Heap

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2940. Find Building Where Alice and Bob Can Meet

周賽372。前陣子在整理線段樹模板,剛好練習到相似題2286. booking concert tickets in groups。 樹是有成功搞出來,但是誤會題目的要求,有些小問題會算出錯誤答案,好可惜。

堆積 Heap

刷題用過heap不少次,今天就來自己做做看。

LeetCode 2402. Meeting Rooms III

周賽309。相似題1606. find servers that handled most number of requests。沒有排序吃一個WA,好慘。

LeetCode 1696. Jump Game VI

每日題。明明以前寫過,但是卻想不起來。看來我跟單調佇列還是不夠熟。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

Back to top ↑

SlidingWindow

LeetCode 3171. Find Subarray With Bitwise AND Closest to K

周賽 400。更新答案少寫一行,虧一個 WA,好慘。 LC 官方最近宣布使用先進的作弊檢查計數,嚴格禁止任何作弊行為,不知道效果如何。 唯一確定的是這場伺服器有點問題,希望別又在我上分的時候 unrate。

LeetCode 2981. Find Longest Special Substring That Occurs Thrice I

周賽378。這題真的很垃圾,常數不知道在卡什麼意思,基本上只有O(N)的能過,O(N log N)很大機率吃TLE。 本以為是卡python,換了golang來寫,結果過的測資反而更少。目前只有看過C++能用O(N log N)過。

LeetCode 2958. Length of Longest Subarray With at Most K Frequency

雙周賽119。非常簡單,但是測資好像有點爭議。 題目保證了1 <= k <= nums.length,但聽說有好幾筆測資出現大於nums長度的k,害某些人噴錯。 可能有人拿k和len(nums)取最小值,反而被這個爛東西坑了。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2398. Maximum Number of Robots Within Budget

雙周賽86。一開始想到了單調堆疊來找到各個chargeTimes[i]的左右邊界,後來發現是錯的。 後來及時想到二分搜+滑動窗口,但是二分搜寫到一半突然開竅:直接滑動不就得了嗎?

LeetCode 2379. Minimum Recolors to Get K Consecutive Black Blocks

雙周賽85。老實說看到這題有嚇到,一時想不到怎麼暴力解,難道Q1就要求滑動窗口?感覺這次比賽有點可怕。 雖然後來確定能用暴力解,但是討論區有人說做出Q4確做不出這題,有點誇張。

Back to top ↑

BFS

LeetCode 2608. Shortest Cycle in a Graph

雙周賽101。我一直卡在不知道如何處理奇數環和偶數環。正確應該在入佇列之前就判斷環,而不是進去後才判斷,有夠尷尬。 最近官方水準越來越垃圾,不抓作弊就算了,還直接這種google名稱就可以找到答案的題目,直接冒出兩三千個作弊哥貼答案,誠實的同學們真的被打個半死。

LeetCode 2258. Escape the Spreading Fire

雙周賽77。堪稱最近幾次Q4中最難的,排行榜前50名的人七成都噴過WA。 本來還以為我算擅長二分搜,結果兩次Q4碰到二分搜都沒有察覺,敏銳度有待加強。

LeetCode 1631. Path With Minimum Effort

每日題。開始覺得這陣子團隊是要搞併查集系列,但說實話這題真的不太適合用併查集,硬要用也沒什麼意思。

LeetCode 365. Water and Jug Problem

臭狗今天食慾超級好,晚上吃了1.5罐頭、一堆雞胸肉、地瓜葉、壽桃、快半碗飯,不給吃還不行,一直亂叫。

LeetCode 133. Clone Graph

每日題。很久以前做過,但今天才發現討論版有人吵說題目描述很爛,看來是以前的測資爛得糟糕,但現在版本沒有問題。

LeetCode 886. Possible Bipartition

題目 有n個人,輸入dislikes陣列,表示a討厭b,不想跟對方在一起,求是否有辦法把所有人成功分為兩組。

Back to top ↑

Stack

LeetCode 2751. Robot Collisions

周賽351。有點像是2731. movement of robots,當初浪費一堆時間做的模擬解竟然在今天得到回報。 然後我還想到[735. Asteroid Collision]這題,基本上是一樣的東西。

LeetCode 173. Binary Search Tree Iterator

每日題。已經不知道是第幾天二元搜尋樹,這題和前幾天的230. Kth Smallest Element in a BST有一點相關,這順序安排就有感受到管理團隊的用心。

Back to top ↑

Bitmask

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2376. Count Special Integers

周賽306。這題真是傷透我心,本來看測資範圍10位數應該也是可以回溯的,很抱歉不行。但是又聽說JAVA和C++能夠通過,看來又是歧視PY。

LeetCode 464. Can I Win

隨便抽的一題,感覺最後的測資有點沒意思,故意放來卡人家WA的。

LeetCode 90. Subsets II

複習回溯經典題,發現我以前竟然偷懶,全都用set去重複,沒有一次自己剪枝的。

Back to top ↑

SortedList

LeetCode 3187. Peaks in Array

周賽 402。又是線段樹題,這次我有把樹搞出來,但是題目查詢的地方沒想通,又繞了大遠路去搞 sorted list。 除了思路有點障礙之外,寫得還很醜,真的差點沒寫出來。

LeetCode 2454. Next Greater Element IV

雙周賽90。眼殘到不行,明明範例一和我的答案不同,還是交了出去,好冤枉的WA。即使總共吃了4個BUG,還是拿到600名,也不算太差。

LeetCode 2398. Maximum Number of Robots Within Budget

雙周賽86。一開始想到了單調堆疊來找到各個chargeTimes[i]的左右邊界,後來發現是錯的。 後來及時想到二分搜+滑動窗口,但是二分搜寫到一半突然開竅:直接滑動不就得了嗎?

LeetCode 729. My Calendar I

用牛刀殺雞,最後還變成電宰場了。 從最初的的暴力法不斷進化,到sorted list(有序串列?),又到二分搜尋樹,最後是動態開點線段樹。

LeetCode 2213. Longest Substring of One Repeating Character

周賽285沒做出來的。只有140個人通過,超級噁心。看一堆人都是用線段樹來解,但是我好像比較能夠接受sorted list。 突然想起以前上課時,老師問到java有沒有sorted list?那時我還心想要這種東西幹嘛。果然太天真了。

Back to top ↑

Tree

LeetCode 2846. Minimum Edge Weight Equilibrium Queries in a Tree

周賽361。上週才考過倍增,這週馬上就考進階用法,真變態。 雖說是進階版,但LCA倍增其實算是競賽的常見題目,網路上隨便都找得到模板可以套用。可能因此通過人數比上次還多。

LeetCode 2581. Count Number of Possible Root Nodes

雙周賽99。不小心開了10^5*10^5的陣列,結果不噴MLE而是TLE。我想了半天不理解為什麼O(N)解不會過,後來才發現是被陣列初始化時間卡死,太智障了。

LeetCode 2421. Number of Good Paths

周賽312。真的是吐血了,寫一半有人打電話來,寫出一坨狗屎code,分心狀況下根本沒辦法debug。後來才發現我把for寫成if,整題就毀了,好慘。

LeetCode 2322. Minimum Score After Removals on a Tree

周賽299。看就想到樹狀dp,但不知道怎麼表達切開的子樹。一直想著要怎麼在dfs函數上處理切割第幾刀,整個思路都是錯的。 說起來這兩次周賽都完全沒出bug,雖然都沒做出Q4,但排名還算前面,算挺開心的。

Back to top ↑

Backtracking

LeetCode 46. Permutations

LC75學習計畫。以前大一考試碰到的題目,那時候根本什麼都不會,根本是難度超標。考完試後才去查到一個比較偏門的解法,但沒有真正搞懂。今天重新思考了一次,原來是如此的經典。

LeetCode 90. Subsets II

複習回溯經典題,發現我以前竟然偷懶,全都用set去重複,沒有一次自己剪枝的。

LeetCode 282. Expression Add Operators

跟今天每日題有點像,特地回來複習。但是我又開始糾結backtracking和dfs到底差在哪裡? 有一說是backtracaking在剪枝的時候會恢復上一動的狀態,以退回走過的路徑;又有一說dfs是處理顯式樹(路徑已經固定),而backtracaking處理的是隱式樹(自己找可行路徑出來)。 那麼這題符合隱式樹,...

LeetCode 78. Subsets

每日題。突然發現沒有寫過回溯法的題解,今天剛好碰上。 題外話,jekyll碰到大括號會解釋成luquid造成爆炸,直接換成全形好了。

Back to top ↑

BinaryTree

Back to top ↑

Design

LeetCode 460. LFU Cache

LRU的好兄弟,打鐵趁熱一起做掉,但是花了好多時間才整理成好看的樣子。 中文叫做最少使用快取,這次真的是把使用次數最少的踢掉,有多個次數相同就踢最久沒用過那個(也就是LRU)。

LeetCode 146. LRU Cache

面試常考題,終於找到時間來做個詳解。 中文叫做最近最不常使用快取,但是常使用是指使用次數還是使用時間?要記住LRU重點是上次的使用時間,把最久沒用的踢出去。 乾脆叫他太久沒上會被踢快取。

LeetCode 745. Prefix and Suffix Search

每日題。好像是想考字典樹吧,結果被我偷雞偷過了。字典樹的解法很多種,但沒一種我覺得容易理解的。

LeetCode 2296. Design a Text Editor

周賽296。有點尷尬的題目,難度不高,但我選錯資料結構差點陣亡,好在剩下最後2分鐘趕快改過來。

LeetCode 173. Binary Search Tree Iterator

每日題。已經不知道是第幾天二元搜尋樹,這題和前幾天的230. Kth Smallest Element in a BST有一點相關,這順序安排就有感受到管理團隊的用心。

LeetCode 729. My Calendar I

用牛刀殺雞,最後還變成電宰場了。 從最初的的暴力法不斷進化,到sorted list(有序串列?),又到二分搜尋樹,最後是動態開點線段樹。

LeetCode 2227. Encrypt and Decrypt Strings

周賽287。第二次全通,雖然MLE、TLE、WA各一次。 開始做的時候就看到AC人數高得誇張,想說暴力法該不會能過,結果不行。後來改成字典樹剪枝才AC。 後來聽說C++可以用暴力法直接過,感覺個語言的執行限制不是很公平。

Back to top ↑

LinkedList

LeetCode 460. LFU Cache

LRU的好兄弟,打鐵趁熱一起做掉,但是花了好多時間才整理成好看的樣子。 中文叫做最少使用快取,這次真的是把使用次數最少的踢掉,有多個次數相同就踢最久沒用過那個(也就是LRU)。

LeetCode 146. LRU Cache

面試常考題,終於找到時間來做個詳解。 中文叫做最近最不常使用快取,但是常使用是指使用次數還是使用時間?要記住LRU重點是上次的使用時間,把最久沒用的踢出去。 乾脆叫他太久沒上會被踢快取。

LeetCode 86. Partition List

每日題。又是linked list,但沒有昨天的那麼麻煩。今天寫出來的code跟之前幾乎完全相同,差在變數名不同而已,真神奇。

LeetCode 2326. Spiral Matrix IV

周賽300。看到Spiral Matrix就想說完蛋,這系列都很麻煩,結果還真的卡了我十分鐘debug。

LeetCode 143. Reorder List

今天帶臭狗去照心臟超音波,打了利尿劑,結果把我褲子全都尿濕了。

LeetCode 138. Copy List with Random Pointer

每日題。 還滿有趣的題目,大部分人都是使用space-time O(N)解法,沒想到竟然會出現space O(1)解法,敬佩不已。晚點深入研究。

LeetCode 148. Sort List

每日題,難度上下限很大,依據作法不同要說是easy或hard都可以。

Back to top ↑

SegmentTree

LeetCode 2940. Find Building Where Alice and Bob Can Meet

周賽372。前陣子在整理線段樹模板,剛好練習到相似題2286. booking concert tickets in groups。 樹是有成功搞出來,但是誤會題目的要求,有些小問題會算出錯誤答案,好可惜。

LeetCode 2407. Longest Increasing Subsequence II

周賽310。每次python寫線段樹都很痛苦,很容易出bug就算了,還常常超時。明明就是正確的複雜度還是TLE,嘔氣到不行。 比賽結束後我自己又拿當時TLE的程式碼再交一次,竟然就過了(????),真的氣氣氣氣,還我300名來。

LeetCode 729. My Calendar I

用牛刀殺雞,最後還變成電宰場了。 從最初的的暴力法不斷進化,到sorted list(有序串列?),又到二分搜尋樹,最後是動態開點線段樹。

LeetCode 699. Falling Squares

普通線段樹一樣沒辦法過的超大測資,動態開點順利解決。 後來看提示才知道出題者想考的是座標壓縮+普通的線段樹。沒錯,動態開點就是這麼任性。

Back to top ↑

Trie

LeetCode 2977. Minimum Cost to Convert String II

周賽377。應該刷新個人最佳,名次66。 這題太多瑕疵,可能我吃過太多次同口味的屎,很快就知道要怎麼吞下肚,因禍得福吧。 而且兩段一樣的敘述,Q3用的是letters,但Q4改用characters,乍看內容不同,結果意思完全一樣,浪費時間。

LeetCode 2932. Maximum Strong Pair XOR I

周賽371。同時是Q1也是Q4。 其實我感覺這題有點微妙,怎麼會有將近700人通過。 畢竟中國站在11/4號的每日題就是這次的原題,答案稍微改一下就可以了。

LeetCode 2227. Encrypt and Decrypt Strings

周賽287。第二次全通,雖然MLE、TLE、WA各一次。 開始做的時候就看到AC人數高得誇張,想說暴力法該不會能過,結果不行。後來改成字典樹剪枝才AC。 後來聽說C++可以用暴力法直接過,感覺個語言的執行限制不是很公平。

Back to top ↑

MonotonicStack

Back to top ↑

UnionFind

LeetCode 3108. Minimum Cost Walk in Weighted Graph

周賽 392。這題也有點問題,沒講清楚起點和終點相同要怎樣,只能猜 -1 或是 0。 前一百名內有 8X 人都猜錯了,笑死。至少錯一次後就知道答案,沒有隱藏測資很良心了。

LeetCode 2421. Number of Good Paths

周賽312。真的是吐血了,寫一半有人打電話來,寫出一坨狗屎code,分心狀況下根本沒辦法debug。後來才發現我把for寫成if,整題就毀了,好慘。

LeetCode 1202. Smallest String With Swaps

每日題。好久沒有在每日題出現併查集,我也好一段時間沒寫過相關題,且這篇是我第一篇寫的並查集題解! 雖然說是併查集題,但我今天是先用dfs把它解決的。我認為一個好的題目不會被侷限於單一一種解法,可能因為大多數人都如此覺得,這題的讚數才會破兩千。

Back to top ↑

TopologySort

LeetCode 2603. Collect Coins in a Tree

周賽338。網站卡了40幾分鐘,做完前面三題根本沒時間看,連題目都沒看懂就結束了。不過我倒有猜到是拓樸排序。

LeetCode 2392. Build a Matrix With Conditions

周賽308。其實算是很簡單的Q4,但我沒看出來是拓樸排序,在那邊貪心半天。賽後看到知道是拓樸排序就馬上寫出來了,好冤。

Back to top ↑

Geometry

LeetCode 858. Mirror Reflection

每日題。寫起來不是很舒服的題,早上本來看到900個爛,現在已經1300了。倒是沒想到暴力模擬也能過就是了。

LeetCode 2249. Count Lattice Points Inside a Circle

周賽290。看到題目差點嚇尿,想起某次Q2挖骨董的噩夢,結果還真和那次差不多慘烈,用了錯誤方法吃兩個WA。 不過這題給python的時間限制好像很短,看到好幾個python大老拿到TLE,很生氣的上去罵官方,剛好我的解法沒有超時而已。

Back to top ↑

BinarySearchTree

LeetCode 173. Binary Search Tree Iterator

每日題。已經不知道是第幾天二元搜尋樹,這題和前幾天的230. Kth Smallest Element in a BST有一點相關,這順序安排就有感受到管理團隊的用心。

LeetCode 99. Recover Binary Search Tree

每日題。又是二分搜尋樹,follow up還要求O(1)空間解法,結果人有爆氣說沒必要反芻五十年前的垃圾演算法,有夠好笑。

LeetCode 729. My Calendar I

用牛刀殺雞,最後還變成電宰場了。 從最初的的暴力法不斷進化,到sorted list(有序串列?),又到二分搜尋樹,最後是動態開點線段樹。

Back to top ↑

Counting

Back to top ↑

BIT

LeetCode 2179. Count Good Triplets in an Array

模擬雙周賽72。一開始還真是完全摸不著頭緒,看了滿多篇解答,不是解釋不清楚,就是刻意寫得很艱深,連集合論的bijection都拿出來講,好險最後是有看到幾篇正常的。

Back to top ↑

筆記

堆積 Heap

刷題用過heap不少次,今天就來自己做做看。

KMP演算法

KMP演算法 一個人能走的多遠,不在於他在順境時能走多快,而在於在逆境時多久能找到曾經的自己

Python小技巧

前言 刷題刷久了,有些東西一直重複手打,紀錄一些比較常用到的東西減緩手痛。 順便放一些不常用但很有用的奇怪小語法。 還有少數看過覺得很奇怪又幾乎不會用到的魔法。

Back to top ↑

DevideAndConquer

LeetCode 148. Sort List

每日題,難度上下限很大,依據作法不同要說是easy或hard都可以。

Back to top ↑

MonotonicQueue

LeetCode 2398. Maximum Number of Robots Within Budget

雙周賽86。一開始想到了單調堆疊來找到各個chargeTimes[i]的左右邊界,後來發現是錯的。 後來及時想到二分搜+滑動窗口,但是二分搜寫到一半突然開竅:直接滑動不就得了嗎?

Back to top ↑

BinaryLifting

LeetCode 2846. Minimum Edge Weight Equilibrium Queries in a Tree

周賽361。上週才考過倍增,這週馬上就考進階用法,真變態。 雖說是進階版,但LCA倍增其實算是競賽的常見題目,網路上隨便都找得到模板可以套用。可能因此通過人數比上次還多。

Back to top ↑

Python

Python小技巧

前言 刷題刷久了,有些東西一直重複手打,紀錄一些比較常用到的東西減緩手痛。 順便放一些不常用但很有用的奇怪小語法。 還有少數看過覺得很奇怪又幾乎不會用到的魔法。

Back to top ↑

RollingHash

Back to top ↑

MST

Back to top ↑

DevideAndconquer

Back to top ↑