first init
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 1. 指定CMake最低版本要求
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
|
||||
# 2. 设置项目信息
|
||||
project(
|
||||
LeetCodeSolution # 项目名称(可根据题目修改)
|
||||
VERSION 1.0.0 # 项目版本
|
||||
DESCRIPTION "LeetCode Solution Template"
|
||||
LANGUAGES CXX # 支持的语言
|
||||
)
|
||||
|
||||
# 3. 设置C++标准和编译特性
|
||||
set(CMAKE_CXX_STANDARD 17) # 使用C++17标准
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON) # 必须支持指定标准
|
||||
set(CMAKE_CXX_EXTENSIONS OFF) # 禁用编译器特有扩展
|
||||
|
||||
# 4. 配置构建类型和编译选项
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Debug) # 默认构建类型为Debug(便于调试)
|
||||
endif()
|
||||
|
||||
# 公共编译选项
|
||||
add_compile_options(
|
||||
"$<$<CONFIG:Release>:-O2>" # Release模式优化
|
||||
"$<$<CONFIG:Debug>:-g>" # Debug模式包含调试信息
|
||||
"$<$<CONFIG:Debug>:-O0>" # Debug模式不优化
|
||||
)
|
||||
|
||||
# 平台特定选项
|
||||
if(MSVC)
|
||||
add_compile_options(/W3) # MSVC: 警告等级3(刷题时不需要太严格)
|
||||
else()
|
||||
add_compile_options(-Wall -Wextra) # GCC/Clang: 常用警告
|
||||
endif()
|
||||
|
||||
# 5. 源文件收集
|
||||
file(GLOB_RECURSE SOURCES "src/*.cpp") # 递归收集源文件
|
||||
|
||||
# 6. 创建可执行文件目标
|
||||
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||
|
||||
# 7. 自定义目标:运行程序
|
||||
add_custom_target(run
|
||||
COMMAND ${PROJECT_NAME}
|
||||
DEPENDS ${PROJECT_NAME}
|
||||
COMMENT "运行 ${PROJECT_NAME}..."
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
113
array/1binary search/35search-insert-position/c++/src/main.cpp
Normal file
113
array/1binary search/35search-insert-position/c++/src/main.cpp
Normal file
@@ -0,0 +1,113 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <cassert>
|
||||
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
* LeetCode 解题模板
|
||||
*
|
||||
* 使用方法:
|
||||
* 1. 在 Solution 类中实现你的算法
|
||||
* 2. 在 main 函数中添加测试用例
|
||||
* 3. 编译运行:mkdir build && cd build && cmake .. && make && ./Solution
|
||||
*/
|
||||
class Solution
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* 示例函数:搜索插入位置
|
||||
*
|
||||
* @param nums 排序数组
|
||||
* @param target 目标值
|
||||
* @return 目标值的索引,如果不存在则返回插入位置
|
||||
*/
|
||||
int searchInsert(vector<int> &nums, int target)
|
||||
{
|
||||
left = 0;
|
||||
right = nums.size() - 1;
|
||||
while (left < right)
|
||||
{
|
||||
int mid = (left + right) >> 1;
|
||||
if (nums[mid] == target)
|
||||
{
|
||||
return mid;
|
||||
}
|
||||
else if (nums[mid] < target)
|
||||
{
|
||||
left = mid + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
right = mid;
|
||||
}
|
||||
}
|
||||
return target<=nums[left]?left:left+1;
|
||||
}
|
||||
|
||||
private:
|
||||
int left;
|
||||
int right;
|
||||
};
|
||||
|
||||
// 辅助函数:打印测试结果
|
||||
void printTestResult(const string &testName, bool passed)
|
||||
{
|
||||
cout << testName << ": " << (passed ? "pass" : "fail") << endl;
|
||||
}
|
||||
|
||||
// 辅助函数:比较两个整数
|
||||
bool assertEquals(int actual, int expected)
|
||||
{
|
||||
return actual == expected;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
Solution solution;
|
||||
|
||||
// 测试用例 1: 目标值存在于数组中
|
||||
{
|
||||
vector<int> nums = {1, 3, 5, 6};
|
||||
int target = 5;
|
||||
int result = solution.searchInsert(nums, target);
|
||||
int expected = 2;
|
||||
cout<< "result: "<<result<<", expected: "<<expected<<endl;
|
||||
printTestResult("test 1: target exists", assertEquals(result, expected));
|
||||
}
|
||||
|
||||
// 测试用例 2: 目标值不存在,应插入到中间位置
|
||||
{
|
||||
vector<int> nums = {1, 3, 5, 6};
|
||||
int target = 2;
|
||||
int result = solution.searchInsert(nums, target);
|
||||
int expected = 1;
|
||||
cout<< "result: "<<result<<", expected: "<<expected<<endl;
|
||||
printTestResult("test 2: insert middle", assertEquals(result, expected));
|
||||
}
|
||||
|
||||
// 测试用例 3: 目标值大于所有元素
|
||||
{
|
||||
vector<int> nums = {1, 3, 5, 6};
|
||||
int target = 7;
|
||||
int result = solution.searchInsert(nums, target);
|
||||
int expected = 4;
|
||||
cout<< "result: "<<result<<", expected: "<<expected<<endl;
|
||||
printTestResult("test 3: insert end", assertEquals(result, expected));
|
||||
}
|
||||
|
||||
// 测试用例 4: 目标值小于所有元素
|
||||
{
|
||||
vector<int> nums = {1, 3, 5, 6};
|
||||
int target = 0;
|
||||
int result = solution.searchInsert(nums, target);
|
||||
int expected = 0;
|
||||
cout<< "result: "<<result<<", expected: "<<expected<<endl;
|
||||
printTestResult("test 4: insert beginning", assertEquals(result, expected));
|
||||
}
|
||||
|
||||
cout << "\nAll test cases pass." << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user