diff --git a/problems/0166-fraction-to-recurring-decimal/README.md b/problems/0166-fraction-to-recurring-decimal/README.md new file mode 100644 index 0000000..f82de03 --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/README.md @@ -0,0 +1,91 @@ +# [166] Fraction To Recurring Decimal + +## 題目資訊 +- **難度**: Medium +- **標籤**: +- **題目連結**: https://leetcode.com/problems/fraction-to-recurring-decimal/ +- **練習日期**: 2025-09-24 +- **目標複雜度**: 時間 O(?)、空間 O(?) + +## 題目描述 +> 在這裡貼上題目的完整描述(或重點) + +## 先備條件與限制 +- 輸入限制:n ∈ [?, ?]、值域 ∈ [?, ?] +- 回傳/輸出格式:... +- 其他:是否允許排序/就地修改 + +## 解題思路 + +### 初步分析 +- 類型:雙指針 / 滑動視窗 / 排序 / DP / 貪心 / 圖論 ... +- 關鍵觀察: +- 複雜度目標理由: + +### 解法比較 +1. 解法A(基準/暴力): + - 思路: + - 正確性: + - 複雜度:O(?) / O(?) +2. 解法B(優化): + - 思路: + - 正確性: + - 複雜度:O(?) / O(?) + +### 乾跑(Dry Run) +- 範例:... + +## 實作細節與 API 設計 + +### C# 方法簽名(示意) +```csharp +public class Solution { + // TODO: 根據題意調整簽名 + public int Solve(int[] nums) { + return 0; + } +} +``` + +### Go 方法簽名(示意) +```go +func solve(nums []int) int { + return 0 +} +``` + +### 常見陷阱 +- 邊界:空/單一/極值/全相等 +- 去重:排序後跳重複、集合 +- 溢位:使用 64-bit + +## 測試案例 + +### 範例輸入輸出 +``` +Input: ... +Output: ... +Explanation: ... +``` + +### 邊界清單 +- [ ] 空陣列/空字串 +- [ ] 單一元素 / 全相同 +- [ ] 含負數/0/大數 +- [ ] 去重 +- [ ] 大資料壓力 + +## 複雜度分析 +- 最壞:時間 O(?)、空間 O(?) + +## 相關題目 / Follow-up +- + +## 學習筆記 +- 今天學到: +- 卡住與修正: +- 待優化: + +--- +**總結**:這題的核心在於 ______,適合練習 ______。 + diff --git a/problems/0166-fraction-to-recurring-decimal/csharp/Program.cs b/problems/0166-fraction-to-recurring-decimal/csharp/Program.cs new file mode 100644 index 0000000..7a83efa --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/csharp/Program.cs @@ -0,0 +1,24 @@ +// LeetCode 166: Fraction To Recurring Decimal +// 難度: Medium +// 日期: 2025-09-24 + +using System; +using System.Collections.Generic; +using System.Linq; + +public class Solution { + // TODO: 根據題意調整簽名 + public int Solve(int[] nums) { + // 實作解法 + return 0; + } +} + +public class Program { + public static void Main() { + var s = new Solution(); + // TODO: 可加入簡單輸入/輸出測試 + Console.WriteLine("Hello LeetCode 166!"); + } +} + diff --git a/problems/0166-fraction-to-recurring-decimal/csharp/csharp.csproj b/problems/0166-fraction-to-recurring-decimal/csharp/csharp.csproj new file mode 100644 index 0000000..9dbab49 --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/csharp/csharp.csproj @@ -0,0 +1,9 @@ + + + Exe + net8.0 + enable + enable + + + diff --git a/problems/0166-fraction-to-recurring-decimal/go/go.mod b/problems/0166-fraction-to-recurring-decimal/go/go.mod new file mode 100644 index 0000000..c4ffec2 --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/go/go.mod @@ -0,0 +1,3 @@ +module leetcode-166 + +go 1.18 diff --git a/problems/0166-fraction-to-recurring-decimal/go/main.go b/problems/0166-fraction-to-recurring-decimal/go/main.go new file mode 100644 index 0000000..588640e --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/go/main.go @@ -0,0 +1,18 @@ +// LeetCode 166: Fraction To Recurring Decimal +// 難度: Medium +// 日期: 2025-09-24 + +package main + +import "fmt" + +// TODO: 根據題意調整簽名 +func solve(nums []int) int { + return 0 +} + +func main() { + fmt.Printf("Hello LeetCode 166!\n") + // TODO: 可加入簡單測試 +} + diff --git a/problems/0166-fraction-to-recurring-decimal/test/SolutionTests.cs b/problems/0166-fraction-to-recurring-decimal/test/SolutionTests.cs new file mode 100644 index 0000000..95ba3dd --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/test/SolutionTests.cs @@ -0,0 +1,24 @@ +// LeetCode 166 單元測試(xUnit) + +using Xunit; + +public class SolutionTests { + private readonly Solution _s = new Solution(); + + [Fact] + public void Example1() { + // TODO: Arrange + // var input = new int[] { }; + // var expected = 0; + // Act + // var got = _s.Solve(input); + // Assert.Equal(expected, got); + Assert.True(true); + } + + [Fact] + public void EdgeCases() { + Assert.True(true); + } +} + diff --git a/problems/0166-fraction-to-recurring-decimal/test/TestProject.csproj b/problems/0166-fraction-to-recurring-decimal/test/TestProject.csproj new file mode 100644 index 0000000..e2d8b41 --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/test/TestProject.csproj @@ -0,0 +1,19 @@ + + + net8.0 + enable + false + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + diff --git a/problems/0166-fraction-to-recurring-decimal/test/edge_cases.md b/problems/0166-fraction-to-recurring-decimal/test/edge_cases.md new file mode 100644 index 0000000..3e2bf1d --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/test/edge_cases.md @@ -0,0 +1,20 @@ +# 邊界情況清單(166 Fraction To Recurring Decimal) + +## 需要測試的邊界 +- [ ] 空輸入 / 單一元素 +- [ ] 重複元素 / 全相同 +- [ ] 極值(最小/最大) +- [ ] 含負數 / 0 / 大數 +- [ ] 大資料量(接近上限) + +## 額外案例 +### 案例 1 +- 輸入: +- 預期: +- 說明: + +### 案例 2 +- 輸入: +- 預期: +- 說明: + diff --git a/problems/0166-fraction-to-recurring-decimal/test/main_test.go b/problems/0166-fraction-to-recurring-decimal/test/main_test.go new file mode 100644 index 0000000..89e7885 --- /dev/null +++ b/problems/0166-fraction-to-recurring-decimal/test/main_test.go @@ -0,0 +1,12 @@ +// LeetCode 166 單元測試(Go testing) +package main + +import "testing" + +func TestExample(t *testing.T) { + // TODO: input := []int{} + // got := solve(input) + // want := 0 + // if got != want { t.Fatalf("want %v got %v", want, got) } +} +