[#3025] note(numberOfPairs): add Description and init C# project
This commit is contained in:
@@ -0,0 +1,70 @@
|
|||||||
|
# [3025] Find The Number Of Ways To Place People I
|
||||||
|
|
||||||
|
## 題目資訊
|
||||||
|
- **難度**: Medium
|
||||||
|
- **標籤**: Array, Math, Geometry, Sorting, Enumeration
|
||||||
|
- **題目連結**: [LeetCode](https://leetcode.com/problems/find-the-number-of-ways-to-place-people-i/)
|
||||||
|
- **練習日期**: 2025-09-02
|
||||||
|
|
||||||
|
## 題目描述
|
||||||
|
You are given a 2D array `points` of size `n x 2` representing integer coordinates of some points on a 2D plane, where `points[i] = [xi, yi]`.
|
||||||
|
|
||||||
|
Count the number of pairs of points `(A, B)`, where
|
||||||
|
- `A` is on **the upper** left side of `B`, and
|
||||||
|
- there are no other points in the rectangle (or line) they make (**including the border**).
|
||||||
|
|
||||||
|
Return the count.
|
||||||
|
|
||||||
|
## 解題思路
|
||||||
|
|
||||||
|
### 初步分析
|
||||||
|
- 這題主要考察什麼概念?
|
||||||
|
- 有什麼關鍵限制條件?
|
||||||
|
- 預期時間/空間複雜度?
|
||||||
|
|
||||||
|
### 解法概述
|
||||||
|
1. **暴力解法**:
|
||||||
|
- 思路:
|
||||||
|
- 時間複雜度:O(?)
|
||||||
|
- 空間複雜度:O(?)
|
||||||
|
|
||||||
|
2. **優化解法**:
|
||||||
|
- 思路:
|
||||||
|
- 時間複雜度:O(?)
|
||||||
|
- 空間複雜度:O(?)
|
||||||
|
|
||||||
|
## 測試案例
|
||||||
|
|
||||||
|
### 範例輸入輸出
|
||||||
|
```
|
||||||
|
Input: points = [[6,2],[4,4],[2,6]]
|
||||||
|
Output: 2
|
||||||
|
Explanation:
|
||||||
|
- The left one is the pair (points[1], points[0]), where points[1] is on the upper left side of points[0] and the rectangle is empty.
|
||||||
|
- The left one is the pair (points[1], points[0]), where points[1] is on the upper left side of points[0] and the rectangle is empty.
|
||||||
|
- The right one is the pair (points[2], points[0]), where points[2] is on the upper left side of points[0], but points[1] is inside the rectangle so it's not a valid pair.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 邊界情況
|
||||||
|
- `2 <= n <= 50`
|
||||||
|
- `points[i].length == 2`
|
||||||
|
- `0 <= points[i][0], points[i][1] <= 50`
|
||||||
|
- All `points[i]` are distinct.
|
||||||
|
|
||||||
|
## 學習筆記
|
||||||
|
|
||||||
|
### 今天學到什麼?
|
||||||
|
-
|
||||||
|
|
||||||
|
### 遇到的困難
|
||||||
|
-
|
||||||
|
|
||||||
|
### 改善方向
|
||||||
|
-
|
||||||
|
|
||||||
|
### 相關題目
|
||||||
|
- [題目編號] 題目名稱 - 相似概念
|
||||||
|
- [題目編號] 題目名稱 - 進階版本
|
||||||
|
|
||||||
|
---
|
||||||
|
**總結**: 這題的核心概念是...,適合練習...技巧。
|
@@ -0,0 +1,36 @@
|
|||||||
|
// LeetCode 3025: Find The Number Of Ways To Place People I
|
||||||
|
// 難度: Medium
|
||||||
|
// 日期: 2025-09-02
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
public class Solution {
|
||||||
|
public void Solve() {
|
||||||
|
// TODO: 實作解法
|
||||||
|
Console.WriteLine("Hello LeetCode 3025!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 測試程式
|
||||||
|
public class Program {
|
||||||
|
public static void Main() {
|
||||||
|
Solution sol = new Solution();
|
||||||
|
sol.Solve();
|
||||||
|
|
||||||
|
// TODO: 加入測試案例
|
||||||
|
// TestCase1();
|
||||||
|
// TestCase2();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 測試案例模板
|
||||||
|
/*
|
||||||
|
static void TestCase1() {
|
||||||
|
// Input:
|
||||||
|
// Expected:
|
||||||
|
// Actual:
|
||||||
|
Console.WriteLine("Test 1: ");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
@@ -0,0 +1,10 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
@@ -0,0 +1,43 @@
|
|||||||
|
// LeetCode 3025 單元測試
|
||||||
|
// 使用 xUnit 框架
|
||||||
|
|
||||||
|
using Xunit;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
public class SolutionTests {
|
||||||
|
private readonly Solution _solution;
|
||||||
|
|
||||||
|
public SolutionTests() {
|
||||||
|
_solution = new Solution();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestCase1() {
|
||||||
|
// Arrange
|
||||||
|
// TODO: 設定輸入資料
|
||||||
|
// var input = ;
|
||||||
|
// var expected = ;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
// var result = _solution.YourMethod(input);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
// Assert.Equal(expected, result);
|
||||||
|
|
||||||
|
Assert.True(true); // 暫時通過,等待實作
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestCase2() {
|
||||||
|
// TODO: 第二個測試案例
|
||||||
|
Assert.True(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestEdgeCases() {
|
||||||
|
// TODO: 邊界情況測試
|
||||||
|
// 空陣列、單一元素、最大值、最小值等
|
||||||
|
Assert.True(true);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,22 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.4.1" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="../csharp/csharp.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
@@ -0,0 +1,21 @@
|
|||||||
|
# 邊界情況清單
|
||||||
|
|
||||||
|
## 需要測試的邊界情況
|
||||||
|
- [ ] 空輸入 (空陣列、空字串等)
|
||||||
|
- [ ] 單一元素
|
||||||
|
- [ ] 重複元素
|
||||||
|
- [ ] 最大值/最小值
|
||||||
|
- [ ] 負數情況
|
||||||
|
- [ ] 超大資料量
|
||||||
|
- [ ] 特殊字符 (如果是字串題目)
|
||||||
|
|
||||||
|
## 額外測試案例
|
||||||
|
### 案例 1:
|
||||||
|
**輸入**:
|
||||||
|
**輸出**:
|
||||||
|
**說明**:
|
||||||
|
|
||||||
|
### 案例 2:
|
||||||
|
**輸入**:
|
||||||
|
**輸出**:
|
||||||
|
**說明**:
|
Reference in New Issue
Block a user