# Recca Chao 的 gitHub page

## 推廣網站開發，包含 Laravel 和 Kotlin 後端撰寫、自動化測試、讀書心得等。Taiwan Kotlin User Group 管理員。

Given an array of integers `nums` which is sorted in ascending order, and an integer `target`, write a function to search `target` in `nums`. If `target` exists, then return its index. Otherwise, return `-1`.

You must write an algorithm with `O(log n)` runtime complexity.

Example 1:

Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4

Example 2:

Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1

``````class Solution {
fun search(nums: IntArray, target: Int): Int {

}
}
``````

## 解答

`nums` 已經排序過

``````class Solution {
fun search(nums: IntArray, target: Int): Int {
var left = 0
var right = nums.size - 1
while (left <= right) {
val pivot = left + (right - left) / 2
when {
nums[pivot] == target -> return pivot
nums[pivot] > target -> right = pivot - 1
nums[pivot] < target -> left = pivot + 1
}
}
return -1
}
}
``````