first init
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* LeetCode 解题模板
|
||||
*
|
||||
* 使用方法:
|
||||
* 1. 在 Solution 类中实现你的算法
|
||||
* 2. 在 main 函数中添加测试用例
|
||||
* 3. 运行:kotlinc Solution.kt -include-runtime -d Solution.jar && java -jar Solution.jar
|
||||
* 或者使用 IDE(如 IntelliJ IDEA)直接运行
|
||||
*/
|
||||
|
||||
/**
|
||||
* 示例:搜索插入位置
|
||||
*
|
||||
* 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
|
||||
* 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
|
||||
*
|
||||
* 请必须使用时间复杂度为 O(log n) 的算法。
|
||||
*/
|
||||
class Solution {
|
||||
/**
|
||||
* 搜索插入位置
|
||||
*
|
||||
* @param nums 排序数组
|
||||
* @param target 目标值
|
||||
* @return 目标值的索引,如果不存在则返回插入位置
|
||||
*/
|
||||
fun searchInsert(nums: IntArray, target: Int): Int {
|
||||
var left = 0
|
||||
var right = nums.size - 1
|
||||
|
||||
while (left <= right) {
|
||||
val mid = left + (right - left) / 2
|
||||
when {
|
||||
nums[mid] == target -> return mid
|
||||
nums[mid] < target -> left = mid + 1
|
||||
else -> right = mid - 1
|
||||
}
|
||||
}
|
||||
|
||||
return left
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 打印测试结果
|
||||
*/
|
||||
fun printTestResult(testName: String, passed: Boolean) {
|
||||
val status = if (passed) "pass" else "fail"
|
||||
println("$testName: $status")
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个整数是否相等
|
||||
*/
|
||||
fun assertEquals(actual: Int, expected: Int): Boolean {
|
||||
return actual == expected
|
||||
}
|
||||
|
||||
fun main() {
|
||||
val solution = Solution()
|
||||
|
||||
// 测试用例 1: 目标值存在于数组中
|
||||
val nums1 = intArrayOf(1, 3, 5, 6)
|
||||
val target1 = 5
|
||||
val result1 = solution.searchInsert(nums1, target1)
|
||||
val expected1 = 2
|
||||
printTestResult("test case 1:target exists $target1", assertEquals(result1, expected1))
|
||||
|
||||
// 测试用例 2: 目标值不存在,应插入到中间位置
|
||||
val nums2 = intArrayOf(1, 3, 5, 6)
|
||||
val target2 = 2
|
||||
val result2 = solution.searchInsert(nums2, target2)
|
||||
val expected2 = 1
|
||||
printTestResult("test case 2:insert in middle $target2", assertEquals(result2, expected2))
|
||||
|
||||
// 测试用例 3: 目标值大于所有元素
|
||||
val nums3 = intArrayOf(1, 3, 5, 6)
|
||||
val target3 = 7
|
||||
val result3 = solution.searchInsert(nums3, target3)
|
||||
val expected3 = 4
|
||||
printTestResult("test case 3:insert at end $target3", assertEquals(result3, expected3))
|
||||
|
||||
// 测试用例 4: 目标值小于所有元素
|
||||
|
||||
val nums4 = intArrayOf(1, 3, 5, 6)
|
||||
val target4 = 0
|
||||
val result4 = solution.searchInsert(nums4, target4)
|
||||
val expected4 = 0
|
||||
printTestResult("test case 4:insert at start $target4", assertEquals(result4, expected4))
|
||||
|
||||
println("\n all test cases passed!")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user