您的位置:首页 > 编程语言 > Python开发

Python - Search Insert Position

2016-01-16 19:52 656 查看


【LeetCode with Python】 Search Insert Position

标签: LeetCodeLeetCode
with PythonPython
2014-09-21 17:50 1027人阅读 评论(0) 收藏 举报


分类:

LeetCode with Python(103)


版权声明:本文为博主原创文章,未经博主允许不得转载。

博客域名:http://www.xnerv.wang

原题页面:https://oj.leetcode.com/problems/search-insert-position/

题目类型:二分查找

难度评价:★★

本文地址:/article/1377469.html

Given a sorted array 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.

You may assume no duplicates in the array.

Here are few examples.

[1,3,5,6]
, 5 → 2

[1,3,5,6]
, 2 → 1

[1,3,5,6]
, 7 → 4

[1,3,5,6]
, 0 → 0

二分查找的一个变种。如果找到了target,就返回下标(正常的二分查找逻辑),否则就返回插入的位置。二分查找容易搞晕的是到底是返回left还是right,注意到left最终一定停在target上,或停在target的“位置”的右边,所以显然找不到target时,应该返回left的下标作为插入位置。

[python] view
plaincopyprint?





class Solution:

# @param A, a list of integers

# @param target, an integer to be inserted

# @return integer

def searchInsert(self, A, target):

if None == A:

return 0

len_A = len(A)

if target > A[len_A - 1]:

return len_A

if target < A[0]:

return 0

left = 0

right = len_A - 1

while left <= right: # also can be left < right

mid = (left + right) / 2

if A[mid] < target:

left = mid + 1

elif A[mid] > target:

right = mid - 1

else:

return mid

return left
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: