1. 程式人生 > >Leetcode 35:搜尋插入位置(最詳細的解法!!!)

Leetcode 35:搜尋插入位置(最詳細的解法!!!)

給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。

你可以假設陣列中無重複元素。

示例 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

解題思路

因為問題中已經告訴我們這是一個排好序的陣列,而問題又恰恰是一個查詢問題,所以我們很容易想到使用二分搜尋法解決這個問題。

class Solution
: def searchInsert(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ l, r = 0, len(nums) while l < r: mid = (r + l)//2 if target > nums[mid]: l = mid + 1 else
: r = mid return l

實際上這是一個計算重複陣列的lower_bound的問題。

我將該問題的其他語言版本新增到了我的GitHub Leetcode

如有問題,希望大家指出!!!