瀏覽標籤:

C#

[C#][LeetCode] 494. Target Sum

題目

You are given a list of non-negative integers, a1, a2, …, an, and a target, S. Now you have 2 symbols + and -. For each integer, you should choose one from + and – as its new symbol.

Find out how many ways to assign symbols to make sum of integers equal to target S.

題目會傳入兩個參數 nums (數字陣列)S (整數),限制只能使用兩個運算符號 +- 改變數字陣列 nums 的數字讓總和等於 S

解題過程

我自己比較少接觸演算法的東西(大學沒學好),就算去翻解答也看不懂別人在寫什麼東西,後來看了 演算法筆記- Backtracking 的圖解後終於理解解答再寫什麼東西

閱讀更多

[C#][LeetCode] 515. Find Largest Value in Each Tree Row

題目

You need to find the largest value in each row of a binary tree.

Example:

解題過程

這題要找出二元樹中同階層最大的數字,我的作法是先將每層的數字收集起來,最後再一起比較。

答案

 

[C#][.NETCore] 壓縮檔案 & 解壓縮檔案

在 .NET Framework 的時候有好用的 DotNetZip 可以快速壓縮&解壓縮檔案
但在寫 .NET Core 的時候發現這個套件不能使用,那只好默默地自己寫了

這邊就用 System.IO.Compression 提供的 ZipArchive 來簡單寫個壓縮 & 解壓縮範例

壓縮檔案:

 

解壓縮檔案:

 

解壓縮的時候最好可以將 zipArchiveEntry.FullName 再做一層處理,避免產生資安問題 (詳情)

[C#][DI] 相互依賴造成循環注入死結

問題緣由

最近在寫 .NET Core 的時候遇到了一個問題

 

A1Service

 

這是網路教學文章上常見的從建構子中依賴注入 A2Service 的程式
接著我們再來看看另外一支程式

A2Service

 

 

這裡就發生了一個循環依賴的問題 A1Service 在建構子中注入了 A2Service,而 A2Service 也在建構子中注入了 A1Service,造成兩個物件互相依賴造成 Exception

解決方法

改成不直接在建構子中注入 Service ,改注入 IServiceProvider,再利用 GetService 這個方法來取得物件,這樣就可以順利解決這個問題囉。

A3Service

 

A4Service

 

[C#][LeetCode] 28. Implement strStr()

從傳入參數 haystack 中找出參數 needle 中的索引位置,非常基礎的一題

我的答案

 

[C#][LeetCode] 2. Add Two Numbers

輸入兩個 ListNode 物件並將兩個相同層數的數值加總,其值若超過 10 需進位到下個節點,這題我覺得迴圈解法比遞迴更讓人腦袋卡住,可能是我功力不夠吧。

我的遞迴解答:

 

 

我的迴圈作法:

 

 

[C#][LeetCode] 804. Unique Morse Code Words

這題要將英文轉換成摩斯密碼,並計算出重複字串的數量,我用 Linq 輕鬆解決。

 

[C#][LeetCode] 8. String to Integer (atoi)

外部輸入一個字串,若開頭為數字的話或 +- 符號的話則轉換為 int 的型態,且若超過 int 的最大或最小值則取極限值為準。

我的第一版答案如下:

 

 

參考最佳解答後的優化版:

 

[.NET Core] EFCore Generate DbModel

使用 EFCore 的時候沒有看有地方可以像 .NET Framework 可以直接使用 VS 新增 edmx 產生好資料庫的 Model 與 DbContext,這個時候就必須靠自己拉,不過當 Table 多的時候這樣人工慢慢新增 Model 有點智障,於是乎就上網找到了 EFCore Tool 有提供一段命令可以使用。

網址:https://docs.microsoft.com/zh-tw/ef/core/miscellaneous/cli/powershell

這裡就來簡單做個筆記

  1. 首先在 Package Manager Console 輸入指令安裝 EFCore Tool

  1. 若為 Win7 需要先裝 Windows Management Framework 3.0 否則會跟我一樣出現下面的錯誤
    錯誤畫面

  2. 檔案可以在 這裡 找到下載安裝並重開機。

  3. 產生 Model 前需注意一件事情就是密碼不能有 $ 符號,不然會跟我一樣鬼打牆一小時都找不到問題,我有嘗試使用單引號包起來,但依然無法成功連線

  4. 接著在 Package Manager Console 輸入指令 (適用於 Azure SQL DataBase)

  1. 接著就可以看到 VS 裡面跑出 DbModel 與 DbContext 囉 !!