0%

LeetCode.搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。

  • 示例 1: 输入[1,3,5,6], 5 输出2
  • 示例 2: 输入[1,3,5,6], 2 输出1
  • 示例 3: 输入[1,3,5,6], 7 输出4
  • 示例 4: 输入[1,3,5,6], 0 输出0

解法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
object SearchInsert {

def main(args: Array[String]): Unit = {
println(searchInsert(Array(1), 0))
println(searchInsert(Array(1), 1))
println(searchInsert(Array(1), 2))
println(searchInsert(Array(1, 3), 3))
println(searchInsert(Array(1, 3, 5, 6), 5))
println(searchInsert(Array(1, 3, 5, 6), 2))
println(searchInsert(Array(1, 3, 5, 6), 7))
println(searchInsert(Array(1, 3, 5, 6), 0))
}

def searchInsert(nums: Array[Int], target: Int): Int = {
if (nums.length == 0) return 0
if (nums.length == 1 && nums(0) >= target) return 0
if (nums.length == 1 && nums(0) < target) return 1
var l = 0
var r = nums.length - 1
while (l < r) {
val m = (l + r) / 2
if (nums(m) > target) {
r = m - 1
} else if (nums(m) < target) {
l = m + 1
} else {
return m
}
}
if (nums(l) >= target) l else l + 1
}

}