LeetCode: Search Insert Position
Question
Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
Solution
此題可以參考前一篇 binary search 的文章來解答。 在上一篇,當 nums 集合內搜尋不到目標元素時會回傳 -1,本題則是需要以大小順序回傳合適的位置。
因此我們可以拿 binary search 的程式碼來修改,以 push 方法將目標元素加入 nums 集合中。接著再以 sort! 方法重新排序,最後用 index 方法就可以取得 target 元素所在的位置了。
def search_insert(nums, target)
min = 0
max = nums.length - 1
while min <= max
mid = (min + max) / 2
if nums[mid] == target
return mid
elsif nums[mid] > target
max = mid - 1
else
min = mid + 1
end
end
nums.push(target)
nums.sort!
nums.index(target)
end
Comments