herrDeng網內搜尋

自訂搜尋

Ads

2023年12月31日 星期日

Python C++速解Leetcode 1624 Largest Substring Between Two Equal Characters


Python C++速解Leetcode 1624 Largest Substring Between Two Equal Characters。2023年底是簡單題Leetcode 1624. Largest Substring Between Two Equal Characters,無需Hash table,用array才是王道

2023年12月30日 星期六

2023年12月16日 星期六

2023年12月11日 星期一

2023年12月6日 星期三

2023年12月4日 星期一

C, python解leetcode 2264 Largest 3 Same Digit Number in String


Leetcode又是連續出數日簡單的問題2264. Largest 3-Same-Digit Number in String,然而簡單問題還要要用適當的方式來解,解法最好有延展性,就用類似sliding window的解法。

2023年11月25日 星期六

C++ Python公式推導Prefix sum解Leetcode 1685 Sum of Absolute Differences in a...



C++ Python公式推導Prefix sum解Leetcode 1685  Sum of Absolute Differences in a Sorted Array
對於會用Σ處理公式的,Leetcode 1685. Sum of Absolute Differences in a Sorted Array這應算是Bill Gates口中簡單的數學,

2023年11月20日 星期一

C++ python 迴圈累加解Leetcode垃圾車問題2391 Minimum Amount of Time to Collect Gar...



C++ python 迴圈累加解Leetcode垃圾車問題2391  Minimum Amount of Time to Collect Garbage。Leetcode垃圾車的問題根本是閱讀測驗,

2023年11月19日 星期日

C++頻率分析解Leetcode 1887 Reduction Operations to Make the Array Elements Equal



C++頻率分析解Leetcode 1887 Reduction Operations to Make the Array Elements EqualLeetcode這個週末的兩題都能用frequency  count,即所謂的counting sort來解題,如1887. Reduction Operations to Make the Array Elements Equal。因為是線性時間比起官方解答都要快,當然就100趴

2023年11月16日 星期四

Python C++集合論Cantor對角線法解Leetcode 1980 Find Unique Binary String

Python  C++集合論Cantor對角線法解Leetcode 1980  Find Unique Binary String
別說純數學沒用,數論拿來做密碼設計,集合論的Cantor對角線法至少還能解程式,會用就一百趴。

2023年11月9日 星期四

C++ python高斯小學公式解Leetcode 1759 Count Number of Homogenous Substrings


C++ python高斯小學公式解Leetcode 1759  Count Number of Homogenous Substrings
高斯小學公式解1+2+...+n=n(n+1)/2 就 O(1)時間,不用它也行改用迴圈需時O(n)。解Leetcode 1759. Count Number of Homogenous Substrings也很好用,O(n)時間,O(1)空間,如果還要優化,就考慮平行化,這裡似乎有難度,空間就多用點。

2023年10月2日 星期一

2023年9月25日 星期一

C++ Python用XOR sum解字串問題Leetcode 389 find the difference


C++ Python用XOR sum解字串問題Leetcode 389 find the difference。字串 t 是透過隨機打亂字串 s 產生的,然後在隨機位置再添加一個字母。找出那個添加的字母

2023年9月16日 星期六

C++ Dijkstra演算解爬山省力路徑Leetcode問題1631 Path With Minimum Effort


影片中的部份圖取自 wiki Dijkstra演算頁面。應該可以確認題目的「距離」是由所謂pseudo metric給定,這個要等檢查metric定義的條件時,才猛然發現。想通後,Union Find的解也解出,異常簡易。
[code on Leetcode]https://leetcode.com/problems/path-with-minimum-effort/solutions/4049711/c-dijkstra-s-algorithm-vs-dfs-binary-search-vs-union-find-pseudo-metric-91-ms-beats-98-93/

2023年9月3日 星期日

組合Pascal三角Python C++解Leetcode 62 unique paths


組合Pascal三角Python C++解Leetcode 62 unique paths。把網站的例題轉個45度角,它的計算方式就是Pascal三角,也就是組合數C^N_K  (N=n+m-2, K=m-1),程式要寫得好,還是要多學點數學!
有了遞迴公式,就可用動態規劃dynamic programming,動態規劃就是一種程式設計的技巧

2023年9月1日 星期五

C++bit處理解Leetcode 338 counting Bits


提供三種位元處理方式來數位元,第三個解感謝由網友@Adamm93提供。提供 O(n) 線性時間解決方案。 __builtin_popcount 或 C++ bitset count() 執行時間為 O(log⁡ n) ,其實就是真的去數,因此在快速實作不使用。

2023年8月23日 星期三

鴿籠原理解Leetcode 767. Reorganize String

 


3隻狗4狗洞每隻狗都有一個狗洞,但只有兩個狗洞就不可能。若某個字元 c 的頻率 freq(c) 大於 (n+1)/2,根據鴿籠原理(Pigeonhole principle),找到一個相鄰字元不相同的字串是不可能的,反之則可能。當有 4 個成一排的狗洞,而有 3 隻狗時,不可能存在相鄰的狗洞讓這 3 隻狗分開,5個狗洞就可以。

2023年8月20日 星期日

C++拓樸排序Kahn演算與DFS解Leetcode難題1203 Sort Items by Groups Respecting Depende...

 
 C++拓樸排序Kahn演算與DFS解Leetcode難題1203 Sort Items by Groups Respecting Dependencies
Kahn算法是一種透過刪除邊緣並減少入度的廣度優先搜索方法。

2023年8月18日 星期五

解 Leetcode 1615. Maximal Network Rank

Leetcode的問題很多樣,本來科技公司的徵人題目就不可測。今天是圖論的問題1615. Maximal Network Rank,描述的題意很不清楚。搞了許久也不知其圖是否為connected,因為是中等題目先假設是,透過標準的圖論處理,基本上就是造adjacent matrix算degree ,一個 O(V^2+E)的解答就成形,再針對題目優化演算O(V+E)的解答也完成。https://leetcode.com/problems/maximal-network-rank/solutions/3924728/cpython-adjacent-matrix-and-degree-array-ove/

2023年8月15日 星期二

C/C++解Leetcode 86 Partition List---Linked List鏈結串列


C/C++解Leetcode 86 Partition List---Linked List鏈結串列。刷題除了難題外,也要練習一下標準題型,這是標準的指標問題無誤。將所給的串列頭部分成兩個鏈結串列,一個是greater,另一個是smaller。然後將這兩個串列連接在一起,並返回結果。整個過程透過在Leetcode的Playground內所提交的修改程式碼來展示

2023年8月13日 星期日

C++ dp動態規劃解leetcode 2369 Check if There is a Valid Partition For The Array


C++ dp動態規劃解leetcode 2369 Check if There is a Valid Partition For The Array
這是一個DP問題。 使用一維陣列 DP 來存儲狀態。 使用自上而下的設計。 實現了具有記憶功能的遞迴程式。 第二種方法使用優化空間 O(1) 的自下而上設計。 由於計算時只考慮 dp[i-2]、dp[i-1]、dp[i] 和 dp[i+1] 4 個狀態。 索引模 4 足以滿足我們的實現。

2023年7月31日 星期一

C++動態規劃DP解Leetcode 712,1143 LCS問題



C++動態規劃DP解Leetcode 712,1143 LCS問題。利用計算公式minimumDeleteSum=asciiSum(s1)+asciiSum(s2)−2×asciiSum(LCS)
LCS(Longest common subsequence)之類的問題其實跟 DNA 序列的比對問題密切關聯。

2023年7月30日 星期日

#黑柴犬 游泳初體驗(black shiba swimming)

 
黑柴犬 游泳初體驗,狗天生就會游泳,沒人教也沒狗教,一下水就狗爬式一路游

2023年7月16日 星期日

DP動態規劃與bit遮罩C++解Leetcode 1125小而夠的團隊Smallest Sufficient Team




DP動態規劃與bit遮罩C++解Leetcode 1125小而夠的團隊Smallest Sufficient Team
這段程式碼使用動態規劃來找出擁有所有所需技能的最小足夠團隊。它使用二進位遮罩表示技能,並遍歷所有可能的團隊成員組合來找到最佳解。

2023年7月8日 星期六

Python/C++ Geedy演算完美切割解難題Leetcode 2551 Put Marbles in Bags


Geedy演算完美切割解難題Leetcode 2551 Put Marbles in Bags 要找到所有切割的最大和最小score,可以使用兩種方法:排序切割score(partition[i] = weights[i] + weights[i+1])或使用堆(C++ priority_queue)。一旦score排序或存儲在堆中,就可以輕鬆識別最大和最小score。

2023年7月5日 星期三

backtracking solves 8 queens by C++八后問題展示回遡解答


backtracking solves 8 queen by C++. Visualize the solving process by own C++/openCV program. Base on my C++ code solving Leetcode 51. N-Queens. There are exact 92 solutions for 8 queens. Some of them will be shown.

2023年7月1日 星期六

C++/Python DP動態規劃與bit遮罩解Leetcode 2305公平分餅乾 Fair Distribution of Cookies


C++/Python DP動態規劃與bit遮罩解Leetcode 2305公平分餅乾 Fair Distribution of Cookies 程式中使用了具有備忘錄的動態規劃。透過考慮每個袋子中不同子集的餅乾,程式遞迴地計算最小的不公平度。

2023年6月30日 星期五

BFS Minheap waterway solves #Leetcode 1970 Last Day Where You Can Still ...


BFS最小堆水路解Leetcode 1970 "最後一天你仍然可以穿越"的隨機測試案例。 使用C++/OpenCV將解方視覺化。核心想法是找到從第1欄到第col欄的連通水路。水路要用8個方向才可切斷陸路。

2023年6月24日 星期六

C++ DP解Leetcode 956 Tallest Billboard 難題最高的廣告看板


C++ DP解Leetcode 956  Tallest Billboard 難題最高的廣告看板。問題難。 嘗試使用動態規劃來解。 使用不同的資料結構可以測試性能! 提供了 3 種不同的使用動態規劃的解決方案,一種使用unordered map,第兩種使用vector,第三種使用遞迴+記憶。

2023年6月20日 星期二

python/Sliding window解Leetcode 2090 K Radius Subarray Averages半徑K子陣列的平均


python/Sliding window解Leetcode 2090 K Radius Subarray Averages半徑K子陣列的平均 Sliding window實作也不困難,就用到陣列迴圈的概念,雖然標示中等題目,就算是沒學過資料結構演算法的,也很適合正在學一般程式設計的學生練習。

2023年6月16日 星期五

Python/C++用組合數學解難題Leetcode 1569重新排列陣列獲得相同二元搜尋樹之總數


解難題Leetcode 1569 Number of Ways to Reorder Array to Get Same BST 

Python/C++使用組合數學解決問題之方法:重新排列陣列獲得相同二元搜尋樹的方法數(內含python code) 首先,陣列的第一個元素必須成為樹的根節點。

2023年6月15日 星期四

2023年6月11日 星期日

C/C++/python解題Leetcode 36 Valid Sudoku有效數獨


C/C++/python解題#Leetcode 36 Valid #Sudoku 有效數獨。數獨是經典問題。 從{1, 2, ..., 9}中,有512種不同的方式可以選擇每個數字,只能選擇一次或不選擇。 需要檢查27個條件。

2023年6月5日 星期一

Python秒解Leetcode 1232 Check If It Is a Straight Line


Python solves Leetcode 1232 Check If It Is a Straight Line in seconds Simple mathematics, especially high school mathematics, is a very good material for programming and practice. Don’t underestimate this slope formula. Many people are stuck with the denominator being 0!!

2023年6月3日 星期六

DFS C++解Leetcode 1376 Time Needed to Inform All Employees(C++ code)


DFS C++解Leetcode 1376 Time Needed to Inform All Employees 一家公司的每個員工都有一個獨特的ID,從0到n-1。負責人是headID的那位, manager[headID] = -1。manager[i]表示員工i的直接經理,員工i需要花費informTime[i]分鐘來通知他的直接下屬,通知所有員工所需的時間?

2023年5月28日 星期日

動態規劃解C++解Leetcode 1547難題 Minimum Cost to Cut a Stick


這個問題被視為困難的可能原因是,使用暴力解法的時間複雜度為O(m!),其中m代表切割點的數量。然而,我們可以使用動態規劃來有效地解決這個問題。

動態規劃C++解Leetcode 1406難題零和遊戲stone game 3


動態規劃C++解#Leetcode 1406難題零和遊戲#stonegame3。 這是零和賽局,表示所有賽局方的利益之和為一常數,即一方有所得,其他方必有所失。Alice 和 Bob輪流, Alice先開始。 在每位玩家的回合中,該玩家可以從該行剩餘的第一顆石頭中拿走 1、2 或 3 顆石頭。

2023年5月21日 星期日

Leetcode 934最短橋樑與DFS BFS深廣優先搜尋演算C++解答


Leetcode 934最短橋樑與DFS BFS深廣優先搜尋演算C++解答。這是Leetcode在週日的題目,水中有兩島,要搭最短的橋。雖然標示中級,但如同其他週末的題目是較難的,要解這個問題,可先分成兩個步驟:

2023年5月16日 星期二

google Colab上darknet cuda版yolov4, yolov7辨識影片[第二集]


不用懷疑darknet本來就是C/C++/cuda軟體,yolov4, yolov7主要作者也是台灣人。google Colab上darknet cuda版yolo辨識影片[第二集]這一集主要展示用pytube下載yt影片至colab電腦,以及上傳影片至Colab,然後用yolov4, yolov7辨識,只要裝好darknet cuda版,無須其他任何python套件,簡單又暴力。

2023年5月15日 星期一

在google colab上使用Linux處理安裝gpu版Darknet使用yolov4, yolov7辨識圖片[第一集]


不用懷疑darknet本來就是C/C++/cuda軟體。在google colab上使用Linux處理安裝gpu版Darknet使用yolov4, yolov7辨識圖片。這一集主要展示如何使用Linux指令在Google Colab上安裝gpu版Darknet,在colab環境也能編譯執行C/C++程式讀取文字檔,另外辨識darknet的幾張測試圖。 

2023年5月6日 星期六

python本機端使用訓練好Keras模型的實作

 
python本機端使用訓練好Keras模型的實作。ai機器學習辨識的程式實作要有兩個前提,一是硬體軟體,二是訓練好的模型。 
[ML python套件tensorflow-gpu keras軟體安裝說明]https://youtu.be/gEsLLIIAuGs 
[谷哥Teachable Machine訓練Keras模型操作人、貓、狗辨識]https://youtu.be/HbZ5hggMbio
Code請開:

2023年4月29日 星期六

Robomaster AIOT紅外線模組避障車


每次看到掃地機器人被卡住,總是會想質問這內建的程式到底是怎麼寫的? Robomaster AIOT紅外線模組避障車,紅外線模組當然是優於超音波測距模組,一個是靠光、另一個是靠音波反射時間差,紅外線模組瞬間可以掃出一條線上多點的資訊,可以精確知道障礙物的角度與距離。假設路面是平的,障礙物是有垂直面的,可以被ir模組測到(至少下面不是簍空,像是桌椅就不符)。

2023年4月26日 星期三

Leetcode 258 Add Digits C/C++/python解數字相加


老師小學時就知道判斷一自然數n是否為9的倍數就看它的數字和是否為除9餘0,老師的老師有教,連找質數的篩法小學就教了。Leetcode 258 Add Digits C/C++/python解數字相加,解答可以簡單到只有一行

return (num==0)?0:(num-1)%9+1; 

不過先用遞迴解答,老師的遞迴解答雖是多項式時間也能在0 ms完成,再用點簡易數論Number Theory,O(1)的答案就呼之欲出了。C/C++的解答不論演算全是0ms完成,而相同架構的O(1)的答案python卻要35ms,非高階套件應用畢竟不是python的強項(而python的高階應用套件的核心往往是用C/C++/Fortran加上平行化函式庫,甚至是cuda C撰寫的),要玩演算法的實在要好好考慮。

2023年4月19日 星期三

App inventor與chatGPT及openai api串接「追加滑桿實作Json修定」


App inventor與chatGPT及openai api串接「追加滑桿實作Json修定」,Json格式的部份做更合理的處理,追加滑桿就是讓temperature參數可以調整,temperature=0答案最嚴謹,temperature=1 AI就會發揮創意。解軟體問題要像下棋布局,但沒有起手無回的問題,像是走迷宮走錯岔路後要回溯,不要奢望一次到位,AI的建議也不一定正確或最佳解,不斷地精進改善才是王道。

2023年4月12日 星期三

C/C++ curl串接chatGPT與openai API

C/C++ curl串接chatGPT 與openai API,有了curl 就有辦法串接chatGPT & openai_api,如果再加上能處理json的函式庫nlohmann-json,輪子都有了,那就能做出連openai api的車子。

2023年3月28日 星期二

openai dall-e python ai修圖

這隻狗本來是有牽繩的,旁邊的玩具車是ai添加的,影子的方向也處理了,這就是openai dall-e修圖。塗鴉的另外一大目的,就是ai人工智慧(不是工人智慧)修圖的前置作業,因為openai有提供python介面,就直接用python。curl也有但比較是指令集!python code請開:

2023年3月25日 星期六

C++ opencv使用setMouseCallback, circle塗鴉

 
塗鴉當然是有目的的,一方面可以介紹callback函數,另外還有其他用途。這裡opencv的callback函數的用法,應該是C程式的用法,跟C++ functional採Lambda語法的方式不同。可參考下列程式碼:

2023年2月14日 星期二

C程式秒解答Leetcode 509費氏數列 Fibonacci Numbers

 
 C程式秒解答Leetcode 509費氏數列,有數學遞迴定義公式,最快的撰寫程式法就是翻譯成遞迴函數,效能不見得快,也不失一種正確解答方式,雖然是很慢的指數時,應付easy題目有餘。

2023年2月9日 星期四

LeetCode之two sum C/C++解題迴圈法

 
 Leetcode是有名的程式刷題網站,這個題目是個陣列問題,假設給定陣列nums={a_0, a_1,...a_{n-1}}與target找出i,j 使得a_i+a_j=target。

2023年1月2日 星期一

Related Posts Plugin for WordPress, Blogger...

熱門文章