本周題目難度級別'Easy'棋恼,由于學(xué)習(xí)了一段時間Python了哪审,所以以后'Easy'級別的題目全部用Python來寫
題目: 本周題目和上周的算法題很像匾鸥,也是給一個升序的集合和一個數(shù)字target数尿,然后這次讓你找出target的位置(即升序的集合沒有重復(fù)的數(shù)字)被冒,如果集合中沒有target榨汤,則返回插入target的位置(按升序排列后的位置)
思路:這個思路和上次其實(shí)差不多蠕搜,也很簡單,這次就用二分法了:
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left = 0;
right = len(nums)-1;
//如果比組合的第一個小(剪枝)
if target <= nums[left]: return left;
//如果比組合的最后一個大(剪枝)
if target > nums[right]: return right+1;
//二分法開始查找
while (left <= right):
mid = (left + right) >> 1;
if nums[mid] < target:left = mid + 1;
//(剪枝)
if target <= nums[left]: return left;
elif nums[mid] > target:right = mid -1;
//(剪枝)
if target > nums[right]: return right+1;
else:
return mid;
return left;
盡管效率較高收壕,但用時依舊比較長妓灌,Python開發(fā)的應(yīng)用要普及應(yīng)該還要等一段時間,每個語言都有自己的應(yīng)用場景蜜宪,不過用Python寫算法的人明顯的比用C的人多多了虫埂。。圃验。