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日 星期六

Python C++速解Leetcode 1897 Redistribute Characters to Make All Strings E...


Python CPP速解Leetcode 1897  Redistribute Characters to Make All Strings Equal。簡單問題要找到解方,想太複雜就不好了

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月30日 星期三

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日 星期一

openai之point-E操作產生3D點雲

 
 openai 之point-E 操作產生3D點雲,先試用文字轉3D點雲(pointcloud)的示範。
Related Posts Plugin for WordPress, Blogger...

熱門文章