题目:35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 的算法。
示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2
示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1
示例 3:
输入: nums = [1,3,5,6], target = 7
输出: 4
提示:
- 1 <= nums.length <=
- <= nums[i] <=
nums
为 无重复元素 的 升序 排列数组- <= target <=
解题思路
见代码。
实现代码
package leetcode
func searchInsert(nums []int, target int) int {
for i, v := range nums {
if v >= target {
return i
}
}
return len(nums)
}
单元测试
package leetcode
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_searchInsert(t *testing.T) {
assert := assert.New(t)
type args struct {
nums []int
target int
}
tests := []struct {
args args
want int
}{
{
args: args{nums: []int{1, 3, 5, 6}, target: 5},
want: 2,
},
{
args: args{nums: []int{1, 3, 5, 6}, target: 2},
want: 1,
},
{
args: args{nums: []int{1, 3, 5, 6}, target: 7},
want: 4,
},
}
for _, tt := range tests {
actual := searchInsert(tt.args.nums, tt.args.target)
assert.Equal(tt.want, actual)
}
}