今天看一道基础的插入算法题
如果你想知道什么题? 既然你诚心诚意的发问了, 我就大发慈悲的告诉你!
给定一个正序不重复数组nums, 并给定一个目标值target, 在数组中找到目标值target, 如果不存在, 返回顺序插入首次出现位置。
例如:
nums = [1, 2, 3, 4, 5, 6] target = 5 返回: 4
nums = [6, 7, 8, 9] target = 5 返回: 0
nums = [1, 2, 3] target = 5 返回: 3
暴力法
for循环判断, 因为是正序排列, 如果 当前循环数 num[i] >= 目标target 则插入当前位置
否则插入数组最后
func searchInsert(_ nums: [Int], _ target: Int) -> Int {
for i in 0..<nums.count {
if nums[i] >= target{
return i
}
}
return nums.count
}
排序法
这种方法比较巧妙, 将 target 插入数组 nums 然后正序排序, 去target第一次出现的下标 (索引)
1行代码即可, 简洁高效
func searchInsert(_ nums: [Int], _ target: Int) -> Int {
return (nums + [target]).sorted().firstIndex(of: target)!
}
题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
网友评论