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 } }
|