herrDeng網內搜尋

自訂搜尋

Ads

2024年4月24日 星期三

C++ UnionFind BFS DFS解圖論問題Leetcode 1971 Find if Path Exists in Graph


C++ UnionFind  BFS DFS解圖論問題Leetcode 1971 Find if Path Exists in Graph
使用UnionFind class實作容易,效能又好,這對無向圖特別有效。
為了比較,BFS、DFS也實作

Python C++速解Leetcode 1137 N th Tribonacci Number


Python CPP速解Leetcode 1137  N th Tribonacci Number
先用遞迴、再加上cache,然後轉成動態規劃,當然還可以用矩陣冪次方

2024年4月20日 星期六

C++ DFS BFS貪婪三法解Leetcode農地問題1992 Find All Groups of Farmland


C++ DFS BFS貪婪三法解Leetcode農地問題1992  Find All Groups of Farmland
採用三種方式解題,一是DFS, 二是BFS,前兩法都很標準。農地因為都是矩形,第三法採貪婪演算找出矩形右下角,簡單又快速。

2024年4月16日 星期二

C++ DFS BFS解二元樹Leetcode 623 Add One Row to Tree


C++ DFS BFS解二元樹Leetcode 623 Add One Row to Tree
要辨識一位程式設計師是否會使用常用的資料結構,binary  tree就是個鑑別率高的東西,許多程式自學者壓根沒見過。Leetcode 623. Add One Row to Tree是個好練習

2024年4月14日 星期日

C++ python速解左葉節點之和Leetcode 404 Sum of Left Leaves


C++ python速解左葉節點之和Leetcode 404  Sum of Left Leaves。影片中採最簡易解法preorder走訪遞迴,並設參數isLeft=0,其他解法詳見Leetcode連結。Python解請進,C++提供一行解。

2024年4月12日 星期五

python c++用monotonic stack解 Leetcode難題42 trapping rain water並附pyplot繪直方圖解說


Python c++用monotonic stack解 Leetcode難題42 trapping rain water並附pyplot繪直方圖解說
想法是使用索引 m 的單調堆疊來找到右牆height[r]和左牆height [l];計算此區域高於底部 height[m]的水量應為min(height[r]-height[m], height[l]-height[m])*(r-l-1) 

2024年4月9日 星期二

Python C++速解Leetcode 2073 Time Needed to Buy Tickets


Python CPP速解LLeetcode 2073  Time Needed to Buy Tickets
假設x=tickets[k]。 當i≤k時,person[i]最多只能買x張票; 當 i大於k時,person[i]最多只能購買 x-1 票。python code請進

2024年4月7日 星期日

python C++DP動態規劃解Leetcode 678 Valid Parenthesis String


python C++DP動態規劃解Leetcode 678  Valid Parenthesis String
使用2D DP來求解。 由於 n≤100,因此帶有 memo 的遞迴可以完成這項工作。 知道了遞迴那麼DP就一定可行!
第二種方法是迭代 DP 程式碼; 使用 &1 技巧減少空間至O(n)。Python code請進 。

2024年4月6日 星期六

python C++字串deque解Leetcode 1249 Minimum Remove to Make Valid Parentheses


python C++字串deque解Leetcode 1249  Minimum Remove to Make Valid Parentheses
連續幾天都是含括號的字串問題Leetcode 1249. Minimum Remove to Make Valid Parentheses,都提示用stack其實不用,走訪兩次就好,一次去掉多的 ')' ,第二反向去掉多的 '(' ;選用適當的容器,字串、deque就得解了,最快的C++解請進

2024年4月5日 星期五

python C++速解Leetcode 1544 make the string great


python C++速解Leetcode 1544 make  the string great
基本上算是stack解法,但實作的語言C, C++, python只需要善用個別字串的特性,無須使用stack,大幅加快計算速度,C語言解答請進,並加上最佳C++解

2024年3月29日 星期五

2024年3月27日 星期三

python單一迴圈解答最佳股票的買賣時機LeetCode 121 Best Time to Buy and Sell Stock



先說明一下這是後知後覺的解答,所謂後知就是股票價格已知存在陣列(清單),當然就要用迴圈練習,雙迴圈暴力解需時O(n**2),當然不用,採python單一迴圈解答「最佳股票的買賣時機#LeetCode 121  Best Time to Buy and Sell Stock」,解法簡單快速O(n)時間。

2024年3月23日 星期六

C++ Folyd龜兔賽跑演算解Leetcode 234, 143 Reorder List

C++ Folyd龜兔賽跑演算解Leetcode 234, 143  Reorder List
今日Leetcode的問題,應該是連續三個相關Linked List問題的總結,基本上都先考慮純單向鏈結的解法,如加上其他容器如deque, stack, vector就會簡單許多。

2024年3月16日 星期六

Python dict C++陣列Prefix Sum解Leetcode 525 Contiguous Array


Python  dict C++陣列Prefix Sum解Leetcode 525 Contiguous Array
使用 Prefix sum 來計算 n0 中的 0 和 n1 中的 1。 使用容器記錄n1-n0的索引。
hash表 (C++ unordered_map, Python dict) 用於此任務。
第二種方法是從第一種方法修改而來的陣列版本,速度很快。python這有提供。

2024年3月9日 星期六

C++雙指標與二元搜尋解Leetcode 2540 Minimum Common Value


C++雙指標與二元搜尋解Leetcode 2540  Minimum Common Value
陣列已排序。 使用雙指標或使用二元搜尋找來解它
第二種方法使用二分搜索,當 n1 或 n2 非常大時另外一個數很小時,這種方法非常有效。

2024年3月8日 星期五

python C C++陣列迴圈速解Leetcode 3005 Count Elements With Maximum Frequency


python C C++陣列迴圈速解Leetcode 3005  Count Elements With Maximum Frequency
陣列迴圈就能解答的,何須用到hash table(C++ unordered_map)簡單的問題可用簡單的 資料結構解答,迴圈就是迴圈、陣列就是陣列(內有python code)

2024年3月3日 星期日

python C C++速解Leetcode 19 Remove Nth Node From End of List並考慮memory leaks問題


python C C++速解Leetcode 19 Remove Nth Node From End of List並考慮memory leaks問題
其實刷題不要只是貪快還是要考慮Memory Leaks,解老題目19 Remove Nth Node From End of List要特別別考慮,另別是C/C++使用者

2024年3月1日 星期五

C++ 2行Python 1行解Leetcode 2864 Maximum Odd Binary Number


Leetcode 2864. Maximum Odd Binary Number問題,要想寫出一行解也不是那麼容易,C++合理的二行解、python的一行解。要點先數幾個1再重填字串,另外還有使用兩個游標的解法,未在影片中。

2024年2月22日 星期四

python C++計算 indegree解Leetcode 997 Find the Town Judge


python C++計算 indegree解Leetcode 997  Find the Town Judge
使用圖形解決方案。
由於信任中的每一對 e=(a, b) 實際上表示一種信任關係,可以將其視為有向邊。C++程式請進
---

2024年2月21日 星期三

python C++ bit 計算O(1)時間解Leetcode 201 Bitwise AND of Numbers Range


python C++ bit 計算O(1)時間解Leetcode 201  Bitwise AND of Numbers Range
這就是用x&(x-1)技法。有人會說計算時間是O(log n),但32-bit整數,無論是迴圈或遞迴頂多32次。如果要熟透bit處理的訣竅,還有更厲害的技法,請進

2024年2月20日 星期二

python C++高斯小學公式與xor sum速解Leetcode 268 Missing Number


python C++高斯小學公式與xor sum速解Leetcode 268  Missing Number
片中講兩種解法,一是用Gauss的n(n+1)/2公式,二是用xor-sum
第三種解法片中未顯示,採radix sort再binary search

2024年2月17日 星期六

C++貪婪演算與Min Heap解Leetcode 1642 Furthest Building You Can Reach

Leetcode問題1642. Furthest Building You Can Reach也是用Greedy演算,有梯子、有磚塊,要訣就是高度差大的用梯子,高度差小的用磚塊,至於容器,C++可用priority_queue或用make_heap,當然也可用multiset,用heap的解答當然很快速,千萬不要誤入歧途採用DP動態規劃,先看constraints就知。

2024年2月15日 星期四

C++, python貪婪演算解多邊形問題Leetcode 2971 Find Polygon With the Largest Perimeter


C++, python貪婪演算解多邊形問題Leetcode 2971  Find Polygon With the Largest Perimeter
程式實作不難,用貪婪演算即可,有人知其然不知所以然,貪婪演算是否可用是需要數學證明的,下面有一個用make_heap的解答,保留在此

2024年2月13日 星期二

C, C++ ,python速解迴文Leetcode 2108 Find First Palindromic String in the Array


C C++ python速解迴文Leetcode 2108  Find First Palindromic String in the Array
這就是迴文「花蓮噴水池水噴蓮花」"racecar",Leetcode蒐集了一堆跟迴文有關的問題,應該是說科技公司面試常出迴文問題。想看C語言解答請進

2024年2月7日 星期三

Python C++採陣列排序速解字串問題Leetcode 451 Sort Characters By Frequency


解Leetcode 451. Sort Characters By Frequency.兩個重點,一是可用陣列就不用hash table(C++ unordered_map)來計數,二是排序的元素很少,可以練習各種排序法,用sort,自製radix sort,用max heap(C++ priority_queue)

2024年2月6日 星期二

Python C++ hash table速解Leetcode 49 Group Anagrams


Python C++ hash table速解Leetcode 49  Group Anagrams
Leetcode今天是老題目49. Group Anagrams,解法很多種,不過弄清楚anagram就是排列,一個簡易又快速的解答就出爐了

2024年2月4日 星期日

C++ sliding window頻率計數陣列解Leetcode難題76 Minimum Window Substring打敗100趴


C++ sliding window頻率計數陣列解Leetcode難題76  Minimum Window Substring打敗100趴
難題Leetcode 76. Minimum Window Substring半年前就解出來了,不過解法不好,保持主要sliding window的架構,把unordered_map換成C int array,用點bitmask 就64個元素的陣列,先用C++,再用python於是100趴的code就成形了

2024年2月3日 星期六

Python C++ dp動態規劃解Leetcode 1043 Partition Array for Maximum Sum


Python C++ dp動態規劃解Leetcode 1043  Partition Array for Maximum Sum
如果你看一下遞迴公式
dp[i]=max(ans, dp[i-j]+j*maxA)  for j in  [1...min(i, j)]
它是 k+1 項遞迴,這意味著遞迴公式中最多有 k+1 個連續項。 所以為了節省空間,可以改為
dp[i%k]=max(ans, dp[(i-j)%k]+j*maxA) for j in  [1...min(i, j)]

2024年1月31日 星期三

C++ python用monotonic stack解Leetcode 739 daily temperatures

C++ python用monotonic stack解Leetcode 739 daily temperatures。Stack在程式設計、資料結構的課會教,但monotonic stack就不一定了。Leetcode 739 daily temperatures,題目問天氣要等幾天才會變暖,當然迴圈可用倒序,這個確定後,當然要確保堆疊的頂端所代表的溫度大於temperatures[i]...

2024年1月27日 星期六

C++ python Mahonian三角四項遞迴公式解Leetcode難題629 K Inverse Pairs Array

C++ python Mahonian三角四項遞迴公式解Leetcode難題629  K Inverse Pairs Array
Fact 1 is for better writing f(n, k)=\sum_{j=0}^{n-1}f(n-1, k-j)
Leetcode 629. K Inverse Pairs Array解這類的Leetcode難題,先導一導數學式,

2024年1月25日 星期四

python C++遞迴邁向dp動態規劃解Leetcode 1143 Longest Common Subsequence


python C++遞迴邁向dp動態規劃解Leetcode 1143  Longest Common Subsequence. LCS之類的問題其實跟 DNA 序列的比對問題密切關聯。非常經典的DP動態規劃問題,有的人會TLE,請注意不是只設cache就好,尤其是C++,字串不要call-by-value 

2024年1月20日 星期六

C++ python DP動態規劃與monotonic stack單調堆疊解Leetcode 907 Sum of Subarray Mini...


解Leetcode 907. Sum of Subarray Minimums,用了DP動態規劃以及Monotonic stack,可以得到線性時間解,如果直接解,那可是O(n^3)時間,有好方法當然要會用

2024年1月13日 星期六

python C++速解Leetcode 1347 Minimum Number of Steps to Make Two Strings A...


python cpp速解Leetcode 1347  Minimum Number of Steps to Make Two Strings Anagram
No need for hash table. there are are just 26 alphabets.
s is anagram of t  ⟺ freq(s)==freq(t)
In other words, s is a permutation of t.

2024年1月8日 星期一

Python C++解二元搜尋樹問題Leetcode 938 Range Sum of BST


Python C++解二元搜尋樹問題Leetcode 938  Range Sum of BST。其實這是蠻典型二元收尋樹的問題,可以試著使用preorder, postorder & inorder等不同走訪的方式來解,二元收尋樹是資料結構的內容,會用它來寫程式跟不會用,就有顯著的區隔。
Related Posts Plugin for WordPress, Blogger...

熱門文章