/* * This Kotlin source file was generated by the Gradle 'init' task. */ package binarySearch class Solution { fun search(nums: IntArray, target: Int): Int { var left = 0 var right = nums.size - 1 // [left,right] 右侧为闭区间,right 设置为 nums.size - 1 while (left <= right) { val mid = (left + right) / 2 if (nums[mid] < target) left = mid + 1 else if (nums[mid] > target) right = mid - 1 // 代码的核心,循环中 right 是闭区间,这里也应是闭区间 else return mid } return -1 // 没有找到 target ,返回 -1 } } // 测试用例 fun main() { val nums = intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8) println("请输入要查找的数字:") val input = readLine() // 验证输入有效性 if (input.isNullOrBlank()) { println("错误:未输入任何内容") return } val target = input.toIntOrNull() ?: run { println("错误:请输入有效的整数") return } val solution = Solution() val result = solution.search(nums, target) if (result == -1){ println("不存在$target") } else{ println("目标索引位置: $result") } } // fun main() { // val nums = intArrayOf(4, 5, 6, 7, 0, 1, 2) // val reader = System.`in`.bufferedReader() // print("请输入要查找的数字: ") // System.out.flush() // val input = reader.readLine() // if (input.isNullOrBlank()) { // println("错误:未输入任何内容") // return // } // val target = input.toIntOrNull() ?: run { // println("错误:请输入有效的整数") // return // } // val solution = Solution() // val result = solution.search(nums, target) // println("目标索引位置: $result") // }