first init
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
"""
|
||||
LeetCode 解题模板
|
||||
|
||||
使用方法:
|
||||
1. 在 Solution 类中实现你的算法
|
||||
2. 在 if __name__ == "__main__" 中添加测试用例
|
||||
3. 运行:python solution.py
|
||||
"""
|
||||
|
||||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
"""
|
||||
示例:搜索插入位置
|
||||
|
||||
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
|
||||
如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
|
||||
|
||||
请必须使用时间复杂度为 O(log n) 的算法。
|
||||
"""
|
||||
|
||||
def searchInsert(self, nums: List[int], target: int) -> int:
|
||||
"""
|
||||
搜索插入位置
|
||||
|
||||
Args:
|
||||
nums: 排序数组
|
||||
target: 目标值
|
||||
|
||||
Returns:
|
||||
目标值的索引,如果不存在则返回插入位置
|
||||
"""
|
||||
left, right = 0, len(nums) - 1
|
||||
|
||||
while left <= right:
|
||||
mid = left + (right - left) // 2
|
||||
if nums[mid] == target:
|
||||
return mid
|
||||
elif nums[mid] < target:
|
||||
left = mid + 1
|
||||
else:
|
||||
right = mid - 1
|
||||
|
||||
return left
|
||||
|
||||
|
||||
def print_test_result(test_name: str, passed: bool):
|
||||
"""打印测试结果"""
|
||||
status = "✓ 通过" if passed else "✗ 失败"
|
||||
print(f"{test_name}: {status}")
|
||||
|
||||
|
||||
def assert_equals(actual: int, expected: int) -> bool:
|
||||
"""比较两个整数是否相等"""
|
||||
return actual == expected
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
solution = Solution()
|
||||
|
||||
# 测试用例 1: 目标值存在于数组中
|
||||
nums1 = [1, 3, 5, 6]
|
||||
target1 = 5
|
||||
result1 = solution.searchInsert(nums1, target1)
|
||||
expected1 = 2
|
||||
print_test_result("测试用例 1: 目标值存在", assert_equals(result1, expected1))
|
||||
|
||||
# 测试用例 2: 目标值不存在,应插入到中间位置
|
||||
nums2 = [1, 3, 5, 6]
|
||||
target2 = 2
|
||||
result2 = solution.searchInsert(nums2, target2)
|
||||
expected2 = 1
|
||||
print_test_result("测试用例 2: 插入中间位置", assert_equals(result2, expected2))
|
||||
|
||||
# 测试用例 3: 目标值大于所有元素
|
||||
nums3 = [1, 3, 5, 6]
|
||||
target3 = 7
|
||||
result3 = solution.searchInsert(nums3, target3)
|
||||
expected3 = 4
|
||||
print_test_result("测试用例 3: 插入末尾", assert_equals(result3, expected3))
|
||||
|
||||
# 测试用例 4: 目标值小于所有元素
|
||||
nums4 = [1, 3, 5, 6]
|
||||
target4 = 0
|
||||
result4 = solution.searchInsert(nums4, target4)
|
||||
expected4 = 0
|
||||
print_test_result("测试用例 4: 插入开头", assert_equals(result4, expected4))
|
||||
|
||||
print("\n所有测试完成!")
|
||||
|
||||
Reference in New Issue
Block a user