71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
// LeetCode 3516: Find Closest Person
|
|
// 難度: Easy
|
|
// 日期: 2025-09-04
|
|
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
// TODO: 實作解法
|
|
func findClosest(x, y, z int) int {
|
|
distanceX := abs(x - z)
|
|
distanceY := abs(y - z)
|
|
|
|
if distanceX == distanceY{
|
|
return 0
|
|
}else if distanceX > distanceY{
|
|
return 2
|
|
}else{
|
|
return 1
|
|
}
|
|
}
|
|
|
|
func abs(n int) int{
|
|
if n < 0 {
|
|
return -n
|
|
}
|
|
return n
|
|
}
|
|
|
|
func main() {
|
|
testCase1()
|
|
testCase2()
|
|
testCase3()
|
|
}
|
|
|
|
// 基本測試案例 - Example 1
|
|
func testCase1() {
|
|
// Input: x = 2, y = 7, z = 4
|
|
// Expected: 1 (Person 1 距離較近: |2-4| = 2 < |7-4| = 3)
|
|
actual := findClosest(2, 7, 4)
|
|
expected := 1
|
|
fmt.Printf("Test 1: Input(2, 7, 4) Expected: %d, Actual: %d, Result: %s\n",
|
|
expected, actual, getResult(actual == expected))
|
|
}
|
|
|
|
// 基本測試案例 - Example 2
|
|
func testCase2() {
|
|
// Input: x = 2, y = 5, z = 6
|
|
// Expected: 2 (Person 2 距離較近: |5-6| = 1 < |2-6| = 4)
|
|
actual := findClosest(2, 5, 6)
|
|
expected := 2
|
|
fmt.Printf("Test 2: Input(2, 5, 6) Expected: %d, Actual: %d, Result: %s\n",
|
|
expected, actual, getResult(actual == expected))
|
|
}
|
|
|
|
// 基本測試案例 - Example 3
|
|
func testCase3() {
|
|
// Input: x = 1, y = 5, z = 3
|
|
// Expected: 0 (距離相等: |1-3| = 2 = |5-3| = 2)
|
|
actual := findClosest(1, 5, 3)
|
|
expected := 0
|
|
fmt.Printf("Test 3: Input(1, 5, 3) Expected: %d, Actual: %d, Result: %s\n",
|
|
expected, actual, getResult(actual == expected))
|
|
}
|
|
|
|
func getResult(pass bool) string {
|
|
if pass {
|
|
return "PASS"
|
|
}
|
|
return "FAIL"
|
|
} |